2017-01-08 27 views
0

我目前正在与UITextField与一个inputview - UIPickerView和我已经添加完成按钮顶部UIPickerView。我可以用ResignFirstResponder从视图控制器以外的功能

let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(ViewController.dismissPickerView)) 

func dismissPickerView() { 
    myTextField.resignFirstResponder 
} 

的问题是,我想调用一个函数从一侧辞职第一个的viewController类从视图控制器类辞职的文本框的第一个响应者关闭与完成按钮选择器视图在myTextField应答如下面

func doneButton (viewcontroller: UIViewController,textfield:UITextField) { 
    let doneButton = UIBarButtonItem(title: "Done", style: UIBarButtonItemStyle.plain, target: self, action: #selector(textfield.resignFirstResponder)) 
} 

这样我就可以使用它的多个选择器的意见,但我不知道如何实现“func doneButton

任何反馈的选择器将帮助

回答

0

您创建了一个helper singleton类,它将被观察到UITextFieldTextDidBeginEditingNotification,UITextFieldTextDidEndEditingNotification。 商店/文本字段或当通知被触发

添加静态或对象的方法的单个类将在先前从通知存储在对象上辞职第一响应者任何其他第一响应者对象的清除参考

Swift 3.0

class KeyBoardHelper { 

var firstResponder:UIView? 

static let sharedInstance = KeyBoardHelper() 

static func initializedInstance() 
{ 
    _ = sharedInstance 
} 

init() 
{ 
    print("Start listning for keyboard event") 

    NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardHelper.keyboardWillShow(notification:)), name: NSNotification.Name.UITextFieldTextDidBeginEditing, object: nil) 

    NotificationCenter.default.addObserver(self, selector: #selector(KeyBoardHelper.keyboardWillHide(notification:)), name: NSNotification.Name.UITextViewTextDidEndEditing, object: nil) 
} 

@objc func keyboardWillShow(notification:Notification) 
{ 
    firstResponder = notification.object as? UIView 
} 

@objc func keyboardWillHide(notification:Notification) 
{ 
    firstResponder = nil 
} 


static func resignKeyboard() 
{ 
    KeyBoardHelper.sharedInstance.firstResponder?.resignFirstResponder() 
} 

@objc func dismissKeyboard() 
{ 
    firstResponder?.resignFirstResponder() 
} 

static func resignBarButton() -> UIBarButtonItem 
{ 
    let barButton = UIBarButtonItem(barButtonSystemItem: UIBarButtonSystemItem.done, target: KeyBoardHelper.sharedInstance, action: #selector(KeyBoardHelper.dismissKeyboard)) 
    return barButton 
} 

} 
+0

我现在就试一试。并提供我的反馈。但我真的不明白你的意思。因为doneButton函数是一个没有类的swift文件。 –

+0

您可以在AppDelegate中初始化一个单例,并将单例实例作为目标和选择器作为单例的resign方法传递,同时创建bar按钮 – Atif