我希望我的UITextField只允许选择、复制和共享。以下是目前为止的情况。
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
print("\(action.description) returns \(action == #selector(copy(_:)) || action == #selector(selectAll(_:)) || action == Selector(("_share:")) )" )
return action == #selector(copy(_:)) || action == #selector(selectAll(_:)) || action == Selector(("_share:"))
}不幸的是这不起作用。当我做长按压或双击时,我得到以下选项:
copy, select, select all, paste, share打印输出
剪切:返回假 复制:返回true 删除:返回false _promptForReplace:返回false _transliterateChinese:返回false _insertDrawing:返回false _showTextStyleOptions:返回false _lookup:返回false _define:返回false _addShortcut:返回false _accessibilitySpeak:返回false _accessibilitySpeakLanguageSelection:返回false _accessibilityPauseSpeaking:返回false _share:返回true makeTextWritingDirectionRightToLeft:返回false makeTextWritingDirectionLeftToRight:返回false
如何摆脱paste和select?
发布于 2019-03-22 18:10:59
如果你从来不允许输入,听起来你真的应该使用一个UILabel,用你想要的动作添加点击/长按手势。
但是如果你还想做的话..。
要实现粘贴,您需要子类UITextField和重写UIPasteConfigurationSupporting的函数。
class UnpasteableTextField: UITextField {
override func canPaste(_ itemProviders: [NSItemProvider]) -> Bool {
return false
}
}至于选择,您可能必须重写UITextInput或UIResponderStandardEditActions中的某些内容。
https://stackoverflow.com/questions/55305321
复制相似问题