问题描述
我在代码中有了此扩展名,以限制我拥有的textField的长度。
我正在尝试禁止粘贴的操作-因为我使用数字输入3位数的值。
我似乎无法将这些代码片段放在正确的位置。
如果将其放在代码块底部的扩展名Viewcontroller:UITextFieldDelegate内,这项工作会成功吗?
我还处于学习过程的早期阶段,有时在哪里放东西并不顺利。预先感谢。
解决方法
此代码将使文本字段仅接受数字。
func textField(_ textField: UITextField,shouldChangeCharactersIn range: NSRange,replacementString string: String) -> Bool {
let invalidCharacters = CharacterSet(charactersIn: "0123456789").inverted
return string.rangeOfCharacter(from: invalidCharacters) == nil
}
并且此代码将防止粘贴。这仅启用剪切和复制功能。
class PastelessTextField: UITextField {
override func canPerformAction(_ action: Selector,withSender sender: Any?) -> Bool {
return super.canPerformAction(action,withSender: sender)
&& (action == #selector(UIResponderStandardEditActions.cut)
|| action == #selector(UIResponderStandardEditActions.copy))
}
}