2016-01-13 63 views
0

嘿,我想在Swift中继承UITextField,所以我可以检测到删除/退格键被按下的时间。到目前为止,我有这样的:在Swift中继承UITextfield以识别删除/退格键

import UIKit 

class DigitTextField: UITextField { 

    var delegate: digitFieldDelegate? 


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

    } 

} 

protocol digitFieldDelegate { 

    func backspacePressed() 

} 

现在我已经在IB改变UITextField类来DigitTextField并创造了的viewController的连接。我得到错误使用未声明的类型DigitTextField。我在这里做错了什么?任何指针将非常感激。谢谢

+0

实现[UITextFieldDelegate](https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextFieldDelegate_Protocol/) – Adam

+1

您不能覆盖UITextFieldDelegate类型的UITextField的默认代理。如果您想创建自己的协议,请将委派更改为其他名称。 –

+0

@Adam在哪里?在我的子类文件? – KexAri

回答

0

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

你所要做的就是将你的属性名改为别的名,这样名称就不会冲突,旧的文本字段委托仍然可以做它应该做的事。

就像这样:

var myDelegate: digitFieldDelegate? 

当然,你也应该更改deleteBackwards方法的话!

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

protocol DigitFieldDelegate { 
    //... 
}