UITextField子类不调用shouldChangeText(在范围内:replacementText:)

时间:2017-01-19 03:43:00

标签: ios uitextfield uitextinput

我有一个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)
    }
}

FWTextFieldUITextField的子类,其中添加了一个简单的inputAccessoryView,其中包含"完成"按钮,键盘仅限于我的故事板中的十进制键盘。

我的故事板和IBOutlet的类型都设置为FWNumberField。有关为什么不调用该方法的任何想法?文档说它应该是。

0 个答案:

没有答案