我有一个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
. 关于为什么不调用该方法的任何想法?文档说应该是。