2017-08-17 9 views
0

私はUITextViewとUITextFieldを持つUIViewControllerを持っています。テキストフィールドとビューの間で最初のレスポンダを切り替える方法

UITextFieldには、ビューのロード時にファーストレスポンダになっ:

override func viewDidAppear(_ animated: Bool) { 
    super.viewDidAppear(animated) 
    textField.becomeFirstResponder() 
} 

問題は、私は単純にUITextViewをタップして編集を開始することができないということです。私の推測では、最初にUITextFieldから最初の応答者を辞任する必要があるということです。

編集を終了してtextField.resignFirstResponder()メソッドを追加するためにUITextFieldDelegateメソッドを試しましたが、そのメソッドは表示されないprintステートメントに基づいてまったくトリガーされていません。ここで

は、そのアプローチの例です:

func textFieldShouldEndEditing(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true 
} 

私は最終的にキーボードを退けることはありませんしながら、これら二つのテキストビューを切り替えるしたいと思います。したがって、最初の応答者ステータスは、単に前後に渡されます。しかし、私は本質的に私の火事にタップしてメソッド呼び出しをさせるメソッドを見つけることができないようです。

どのような方法でこの機能を許可するのか知っていますか?

+0

がFYI - 'textFieldShouldEndEditing'のみが呼び出されますので、' textFieldShouldEndEditing'メソッド内 'resignFirstResponder'を呼び出すする理由はありませんテキストフィールドが自ら辞任しようとしているとき最初の応答者として。 – rmaddy

答えて

0

textFieldShouldEndEditingの中にresignFirstResponderを呼び出すと、textFieldが最初のレスポンダを辞任しようとしているときにだけ関数が呼び出されるため、何の効果もありません。 resignFirstRespondertextFieldShouldReturnの中で使用するか、戻り値キーのタップで編集を終了したい場合は、UIViewControllertouchesBeganメソッドをオーバーライドする必要があります。

リターンキー方式を打つ上でファーストレスポンダを辞任:

func textFieldShouldReturn(_ textField: UITextField) -> Bool { 
    textField.resignFirstResponder() 
    return true  
} 
0

あなたはシミュレータのiOSシステムのキーボードで使用している場合は、時にはあなたがテキストフィールドまたはビューのキーボードを切り替えると文句を言わない本当に消える...表示されません。デバイス..あなたは、シミュレータのハードウェア・オプションからシミュレータのチェックを外し接続ハードウェアキーボードで試してみたい場合は... Simulator Setting Screenshot

関連する問題