15

メールとパスワードの 2 つのテキスト フィールドがあります。次のコードは、フィールドが通常のビューに表示されている場合は正常に機能しますが、フィールドがポップオーバーにある場合は、resignFirstResponder は機能しません (becomeFirstResponder は機能します)。両方のフィールドに対して textFieldsShouldReturn が呼び出されました。何か不足している場合はどうすればよいですか?ありがとう!

  - (BOOL)textFieldShouldReturn:(UITextField *)theTextField {

     if (theTextField == email) {
         [password becomeFirstResponder];
         return NO;
     }

     [theTextField resignFirstResponder];
     return NO;
}
4

5 に答える 5

17

この質問を確認してください:

以下のようにオーバーライドdisablesAutomaticKeyboardDismissalして返すNOと、私の同じ問題が修正されました。このコードをView Controllerに配置し、そこからキーボードを開始する必要があります。

- (BOOL)disablesAutomaticKeyboardDismissal {
    return NO;
}
于 2011-11-29T20:40:13.950 に答える
2

この回答で説明されているように、ビューが UIModalPresentationFormSheet スタイルで表示されている場合、キーボードが画面に表示されたままになることがあります。

于 2011-02-17T03:08:13.093 に答える
1

私もこの問題を抱えていました。しかし、私は別のコントロールを作成することでこれを解決しました。これはポップオーバーにはなく、firstResponder後でそこから辞任しました。しかし、ポップオーバーの問題は何なのかわかりません。

于 2010-09-21T13:54:35.077 に答える
1

これについてはよくわかりませんが、応答者の階層を理解しているので、他の応答者が応答する場合にのみ辞任が機能します。

通常のビューでは、ビュー自体が喜んでいます。ポップアップでは、これを機能させるためにポップアップ クラスに何かをする必要があるかもしれません (いくつかのレスポンダー メソッドを再実装するなど)。

于 2010-09-13T13:56:03.993 に答える
0

答えは、同様の問題を抱えているが、従来の救済策が機能しない他の人への可能な解決策として提供されます。

要約すれば -

私は(特定の条件下で)同様の問題を抱えていて、すべてを試しました-役に立たなかった-可能な解決策のリストに含まれていたのは[objのresignFirstResponder]、ビューコントローラーの「disablesAutomaticKeyboardDismissal」のオーバーライド、[self.view endEditing:YES]でした]; などなど。

現在のファーストレスポンダの [id] を調べてみましたが、それが nil であることがわかりました。キーボードで [完了] をタップするか、上記のいずれかの方法を使用しても、別の入力フィールドをタップした後でも、何も起こりませんでした。キーボードは残りました。

画面は基本的に、各セルにテキスト入力フィールドを持つ UITableView を持つ ViewController でした (合計で 7 つまたは 8 つ)。任意のセルをタップすると、期待どおりにキーボードが表示され、別の「次へ」ボタンをタップすると (キーボードとその他の処理を非表示にする)、期待どおりに機能しました。ただし、横向きモードでは、最後のフィールドがキーボードで覆われており、テーブルをスクロールして表示する必要がありました。

最後の入力フィールドをスクロールしてタップした後、何があってもキーボードを閉じることができませんでした。唯一の回避策は、表をキーボードの下にスクロールして戻し、[次へ] ボタンをタップすることでした。意味がありません。

ほとんどあきらめる (そして回避策を実装する) 時点で、うまくいった解決策は、その最後の入力フィールドを firstResponder にして (点滅するカーソルが既にあったとしても)、その後、ResignFirstResponder にすることでした。

そう;

`-(void) アクションネクスト {

[[m_arrInputFields objectAtIndex:7] becomeFirstResponder];
[[m_arrInputFields objectAtIndex:7] resignFirstResponder];

}`

問題を修正しました- [m_arrInputFields objectAtIndex:#any other index#]はしませんでした!

誰かがこれについて明確または説明を提供できれば素晴らしいでしょう-そうでなければ-他の誰かが数時間の作業を節約できることを願っています!

于 2014-05-22T11:24:35.643 に答える