2

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

4

0 回答 0