我有一个UITextField
的子类,除了被调用的方法shouldChangeText(in range:replacementText:)
没有被调用之外,它在所有方面都有效。我正在尝试创建一个允许用户只输入有效十进制数字的字段,并使其在等效的委托方法中工作,但由于我将在许多地方使用它,我想将其子类化一次。
我的全班是
class FWNumberField: FWTextField {
override func shouldChangeText(in range: UITextRange, replacementText text: String) -> Bool {
if text == ".", self.text == nil || self.text!.isEmpty || self.text!.contains(".") {
return false
} else {
return true
}
}
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(UIResponderStandardEditActions.paste(_:)) { return false }
return super.canPerformAction(action, withSender: sender)
}
}
FWTextField
是UITextField
的子类,其中添加了一个简单的inputAccessoryView
,其中包含"完成"按钮,键盘仅限于我的故事板中的十进制键盘。
我的故事板和IBOutlet的类型都设置为FWNumberField
。有关为什么不调用该方法的任何想法?文档说它应该是。