2017-10-25 15 views
0

FirstResponderから辞任してキーボードを隠すことができない理由はわかりますか?UITextFieldからFirstResponderをresignすることができません

FYI:Xcodeの9

import UIKit 

class ViewController: UIViewController, UITextFieldDelegate { 

    @IBOutlet weak var label: UILabel! 
    @IBOutlet weak var text: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     self.text.delegate = self 
     let tap = UITapGestureRecognizer(target: self, action: #selector(ViewController.tapFunction)) 
     label.isUserInteractionEnabled = true 
     label.addGestureRecognizer(tap) 
    } 

    var keyboardInputEnabled = true 
    @objc func tapFunction(sender:UITapGestureRecognizer) { 
     if self.keyboardInputEnabled { 
      self.text.becomeFirstResponder() 
     }else{ 
      self.view.endEditing(true) 
      self.text.resignFirstResponder() 
     } 
     self.keyboardInputEnabled = !self.keyboardInputEnabled 
    } 

    func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
     return self.keyboardInputEnabled 
    } 

    func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
     return self.keyboardInputEnabled 
    } 

    func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { 
     return self.keyboardInputEnabled 
    } 


    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
    } 

} 

答えて

2

を無効にするための

self.view.endEditing(true)を試してみてください。 this

通常から撮影

、あなたはファーストレスポンダの状態を辞任するテキスト フィールドを許可するには、このメソッドからtrueを返します。ただし、代理人が テキストフィールドに無効なコンテンツを検出した場合は、偽の が返されることがあります。 falseを返すと、ユーザーがテキストフィールドに有効な値が含まれるまで、別のコントロール に切り替えることができなくなります。

0

は、編集モードを終了することを防ぐtextFieldShouldEndEditingリターン偽あなたはtapFunctionを実行して二回目なので、キーボード

+0

ありがとうございました。私は質問を更新します –

関連する問題