31 lines
917 B
Swift
31 lines
917 B
Swift
import UIKit
|
||
|
||
/// 自定义 UITextView,替换系统默认的 UIMenuItem 为自定义操作(拷贝、高亮、批注)
|
||
final class RDEPUBSelectableTextView: UITextView {
|
||
/// 选择菜单操作回调
|
||
var onSelectionAction: ((RDEPUBAnnotationMenuAction) -> Void)?
|
||
|
||
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
|
||
switch action {
|
||
case #selector(rd_copy(_:)),
|
||
#selector(rd_highlight(_:)),
|
||
#selector(rd_annotate(_:)):
|
||
return selectedRange.location != NSNotFound && selectedRange.length > 0
|
||
default:
|
||
return false
|
||
}
|
||
}
|
||
|
||
@objc func rd_copy(_ sender: Any?) {
|
||
onSelectionAction?(.copy)
|
||
}
|
||
|
||
@objc func rd_highlight(_ sender: Any?) {
|
||
onSelectionAction?(.highlight)
|
||
}
|
||
|
||
@objc func rd_annotate(_ sender: Any?) {
|
||
onSelectionAction?(.annotate)
|
||
}
|
||
}
|