【问题标题】:Preventing pasting into a textField in swift 5 [duplicate]防止在swift 5中粘贴到文本字段中[重复]
【发布时间】:2020-08-17 18:25:31
【问题描述】:
我的代码中有这个扩展来限制我拥有的文本字段的长度。
我试图让事情禁止粘贴——因为我使用编号来输入 3 位数的值。
我似乎无法将这些代码 sn-ps 放到正确的位置。
如果我把它放在代码块底部的扩展 Viewcontroller:UITextFieldDelegate 中,这会起作用吗?
我处于学习过程的早期阶段,有时在哪里丢东西不太顺利。提前致谢。
【问题讨论】:
标签:
swift
extension-methods
paste
【解决方案1】:
此代码将使文本字段只接受数字。
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))
}
}