雨燕可重复使用的UITextFieldDelegate

问题描述:

我想实现一个可重用的UITextFieldDelegate类,如下所示:雨燕可重复使用的UITextFieldDelegate

class CustomTextFieldDelegate : NSObject, UITextFieldDelegate 

所有委托协议方法得到正确实施。

controller,我分配delegateUITextField

textField.delegate = CustomTextFieldDelegate() 

的问题是,没有一个代表函数被调用。但是,当我从控制器实施代表协议,然后事情工作正常

class CustomTableViewController: UITableViewController, UITextFieldDelegate 

任何想法是怎么回事?

+3

我猜那是什么。由于委托是文本字段中的弱变量,并且没有任何内容保留您的CustomTextFieldDelegate实例。它会自动释放。 – Horst

+0

我想你必须创建一个'UITextField'的扩展/子类并保留你的代理 –

+0

我会试试这个。谢谢 –

如果你想通过项目重用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. 
+0

我不想继承协议。相反,我试图创建一个可以在许多文本字段上使用的可重用委托。 –

+0

@ Joe.b结帐我更新的答案。它的工作测试迅速1.2 – Shoaib

+0

这是做到了。谢谢。你能解释为什么单身人士的作品,但创建一个对象不? –