2017-01-08 8 views
0

私は現在入力ビュー-でUITextFieldと作業しており、完了ボタンをUIPickerViewの先頭に追加しました。私が最初に辞任のViewControllerクラス側の機能を呼び出すしたいとView Controllerの外の関数からResignFirstResponder

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

func dismissPickerView() { 
    myTextField.resignFirstResponder 
} 

問題をされて使用してビューコントローラクラスからテキストフィールドの最初の応答者を辞任することによって行うボタンでピッカービューを閉じることができます以下

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

ようmyTextField上のレスポンダので、私は複数のピッカービューのためにそれを使用することができますが、私は助ける「func doneButton

のフィードバックセレクタを実装する方法がわかりません

答えて

0

あなたはUITextFieldTextDidBeginEditingNotification、UITextFieldTextDidEndEditingNotificationを観察するヘルパーシングルトンクラスを作成します。 ストア/テキストフィールドまたは通知が

が以前に通知から格納されたオブジェクトの最初のレスポンダを再署名するシングルトンクラスに静的またはオブジェクトメソッドを追加焼成する他の一レスポンダオブジェクトのクリア参照

スウィフト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関数はクラスを持たない迅速なファイルであるためです。 –

+0

AppDelegateでシングルトンを初期化し、シングルトンインスタンスをターゲットとして渡し、セレクタをシングルトンの終了メソッドとして渡して、バーボタンを作成することができます – Atif

関連する問題