2017-01-08 26 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