2017-10-18 12 views
0

私はSwift 3で自分のコードを持っています。私は2つのUITextFieldとUIButtonを私のビューに持っています。私は2番目のUITextFieldに焦点を合わせるときに発生する最初のUITextFieldのtextFieldShouldEndEditingデリゲートを持っています。しかし、私がUIButtonをタップすると、このデリゲートは起動されません。私は、UIButtonがフォーカスを取得すると、フォーカスを失っているので、UITextFieldのイベントが自動的に発生すると思っていました。しかし、UIButtonをタップすると、カーソルはまだUITextFieldで点滅しています。つまり、フォーカスが失われていません。UIButtonがフォーカスを取得しない

なぜUIButtonがフォーカスを得られないのかについてのアイデアが最も高く評価されます。

ありがとうございました。

答えて

0

これは、iOSでフォームを開発する際の激しい側面です。ボタンタップは、HTMLフォームと同じ方法でUITextField/UITextViewからフォーカスを削除しません。

これを解決するためのより洗練された方法があると確信していますが、これをすべてのフォームで一貫して実行したい場合は、ユーザーがいずれかのボタンをタップしたときに次のコード行が実行されるようにします。

- (void)userDidTapButton:(id)sender 
{ 
    [[[UITextField new] becomeFirstResponder] resignFirstResponder] 
    // the above embarrassing line of code basically creates a new textfield 
    // puts focus in it (thereby removing focus from any existing textfields 
    // and then removes focus again 
    // this ensures that delegate events fire on your existing textfields 

// finally, run any other button code 
} 
関連する問題