雨燕可重复使用的UITextFieldDelegate
我想实现一个可重用的UITextFieldDelegate
类,如下所示:雨燕可重复使用的UITextFieldDelegate
class CustomTextFieldDelegate : NSObject, UITextFieldDelegate
所有委托协议方法得到正确实施。
在controller
,我分配delegate
到UITextField
textField.delegate = CustomTextFieldDelegate()
的问题是,没有一个代表函数被调用。但是,当我从控制器实施代表协议,然后事情工作正常
class CustomTableViewController: UITableViewController, UITextFieldDelegate
任何想法是怎么回事?
如果你想通过项目重用CustomTextFieldDelegate,你应该使用一个Singleton实例;
textField.delegate = CustomTextFieldDelegate.sharedInstance
和课改
class CustomTextFieldDelegate : NSObject, UITextFieldDelegate {
static let sharedInstance:CustomTextFieldDelegate = CustomTextFieldDelegate();
func textFieldDidBeginEditing(textField: UITextField) {
NSLog("textFieldDidBeginEditing ...");
}
//... other methods
} //F.E.
我不想继承协议。相反,我试图创建一个可以在许多文本字段上使用的可重用委托。 –
@ Joe.b结帐我更新的答案。它的工作测试迅速1.2 – Shoaib
这是做到了。谢谢。你能解释为什么单身人士的作品,但创建一个对象不? –
我猜那是什么。由于委托是文本字段中的弱变量,并且没有任何内容保留您的CustomTextFieldDelegate实例。它会自动释放。 – Horst
我想你必须创建一个'UITextField'的扩展/子类并保留你的代理 –
我会试试这个。谢谢 –