Swift 可重用 UITextFieldDelegate

Joe*_*e.b 5 custom-controls ios uitextfielddelegate swift

我正在尝试实现一个可重用的UITextFieldDelegate类,如下所示:

class CustomTextFieldDelegate : NSObject, UITextFieldDelegate
Run Code Online (Sandbox Code Playgroud)

所有委托协议方法均已正确实现。

在 中controller,我将 分配delegateUITextField

textField.delegate = CustomTextFieldDelegate()
Run Code Online (Sandbox Code Playgroud)

问题是没有调用任何委托函数。但是,当我从控制器实现委托协议时,一切正常

class CustomTableViewController: UITableViewController, UITextFieldDelegate
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Sho*_*aib 6

如果您想在整个项目中重用 CustomTextFieldDelegate,则应该使用 Singleton 实例;

textField.delegate = CustomTextFieldDelegate.sharedInstance
Run Code Online (Sandbox Code Playgroud)

和班级的变化

class CustomTextFieldDelegate : NSObject, UITextFieldDelegate {

    static let sharedInstance:CustomTextFieldDelegate = CustomTextFieldDelegate();

    func textFieldDidBeginEditing(textField: UITextField) {
        NSLog("textFieldDidBeginEditing ...");
    }
   //... other methods
} //F.E.
Run Code Online (Sandbox Code Playgroud)