在Swift中对UITextfield进行子类化以识别删除/退格键

时间:2016-01-13 12:42:51

标签: ios swift

嘿我正在尝试在Swift中继承UITextField,这样我就可以检测到何时按下了delete / backspace键。到目前为止,我有这个:

import UIKit

class DigitTextField: UITextField {

    var delegate: digitFieldDelegate?


    func deleteBackward() {
        super.deleteBackward()
        delegate?.backspacePressed()

    }

}

protocol digitFieldDelegate {

    func backspacePressed()

}

现在我已将IB中的UITextField类更改为DigitTextField,并在viewController中创建了连接。我收到错误使用未声明的类型DigitTextField 。我在这做错了什么?任何指针都会非常感激。感谢

1 个答案:

答案 0 :(得分:0)

正如LE SANG在评论中指出的那样,你不能只写自己的delegate属性来覆盖旧属性。它只是不起作用!

您需要做的是将您的财产的名称更改为其他名称,以便名称不会发生冲突,旧的文本字段委托仍然可以做它应该做的事情。

就像这样:

var myDelegate: digitFieldDelegate?

当然,你也应该改变deleteBackwards方法中的单词!

此外,建议使用PascalCase命名协议:

protocol DigitFieldDelegate {
    //...
}