7

ビュー間のナビゲーションを含むストーリーボードがあります。前後に移動し、ホーム画面までジャンプする可能性もあります。

基本的に、次のように機能します。

  • ビュー1はシンプルなメニューを示しています。
  • ビュー2には入力フィールドが表示され、キーボードが自動的に表示されます。
  • ビュー3は結果テーブルを示しています。このビューでは、1ステップ戻る(ビュー2に)か、ホーム画面に戻る(ビュー1)ことができます。

ユーザーがビュー1からビュー2に移動するとき、キーボードとすべてが最初に完全に機能します。ただし、ビュー3からビュー2に戻るとき、またはビュー3から最初からやり直すときは、キーボードは表示されません。

コードでは、viewDidAppearメソッドでFirstResponderになりました。また、ビュー3をロードするときにResignFirstResponderを返します。もう1つの興味深い事実は、becomeFirstResponderを2回呼び出すと、NOを返します(最初はYESを返します)。また、このビューに戻ると、userInteractionEnabledであっても、テキストフィールドを選択することはできません。

私は本当にここで立ち往生しているので、どんな助けでも大歓迎です。私はこれに似た質問をいくつか見ましたが、解決策が見つかりませんでした:

4

1 に答える 1

8

コード内の問題を突き止めることができました。他の人にも役立つかもしれないので、自分でこの質問に答えてください。

私の問題は、イベントの順序が正しくないことでした。次のテキストフィールドに移動するボタンがあり、すべてが完了すると次の画面に移動します。これにより、新しい画面に切り替えるときに、becomeFirstResponderメソッドが呼び出され、解放されませんでした(resignFirstResponder)。

私が与えることができる主なアドバイス(少なくとも私にとって最終的にうまくいったこと)は、すべてのbecomeFirstResponderを調べて、次の画面に移動する前にリリースされていることを確認することだったと思います。

于 2012-10-18T05:24:38.540 に答える