我有一个UITextField
只显示数值(0-9,.,-)。当用户选择文本字段的内容时,会出现一个带有“复制”、“粘贴”和“定义”的菜单。由于文本字段仅显示数值,我不希望出现“定义”选项。如何禁用字典中的“定义”选项UITextField
?
编辑:我已经解决了这个问题并在下面发布了解决方案
我有一个UITextField
只显示数值(0-9,.,-)。当用户选择文本字段的内容时,会出现一个带有“复制”、“粘贴”和“定义”的菜单。由于文本字段仅显示数值,我不希望出现“定义”选项。如何禁用字典中的“定义”选项UITextField
?
编辑:我已经解决了这个问题并在下面发布了解决方案
斯威夫特 - iOS 8
您可以通过继承 UITextField 和覆盖canPerformAction:WithSender
方法来做到这一点。
class MyTextFieldWithoutDefine: UITextField {
override func canPerformAction(action: Selector, withSender sender: AnyObject?) -> Bool {
if action == "_define:" {
return false
}
return super.canPerformAction(action, withSender: sender)
}
}
所有动作列表:
cut:
copy:
select:
selectAll:
paste:
delete:
_promptForReplace:
_transliterateChinese:
_showTextStyleOptions:
_define:
_addShortcut:
_accessibilitySpeak:
_accessibilitySpeakLanguageSelection:
_accessibilityPauseSpeaking:
makeTextWritingDirectionRightToLeft:
makeTextWritingDirectionLeftToRight:
问题评论区的解决方案对我不起作用(ios8),我收到错误:
action == @selector(defineSelection:)
通过指定我想包含在菜单中的选项,我能够从编辑菜单中删除“定义”:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
if (action == @selector(copy:) ||
action == @selector(selectAll:)) {
return true;
}
return false;
}
更完整的答案:如何以编程方式禁用 UITextField 中的复制粘贴选项 (谢谢 serge-k)
如果使用 NIB,请将 UITextField 的“Correction”属性设置为“NO”(默认值为 YES)。
如果使用代码,请将“autocorrectionType”设置为“UITextAutocorrectionTypeNO”。
尝试这个:
UITextField* textField = //...;
textField.autocorrectionType = UITextAutocorrectionTypeNo;