0

この質問に従って、アクティブがブロックされている場合にUIKeyboardプッシュアップを行う方法を理解しています:キーボードが存在するときに UITextField を上に移動する方法は? .UIViewUITextViewUIKeyboard

私が疑問に思っているのは、設計の観点から、アプリ内のすべてのビューが、、またはすべてこの機能を備えているため、これらのメソッドを実装する必要があるように、keyboardDidShowおよびメソッドを実装するにはどうすればよいかということです。 1回だけ?keyboardDidHideUIViewUITableViewUIScrollView

私が考えることができる唯一の方法は、 のビュー プロパティをUIViewController常に に設定し、またはが必要な があるUIView場合は、これをサブビューとして添付することです。次に、がブロックされている場合は、親を上に移動して、親に関連付けられているすべてのビューを移動します。UIViewControllerUIScrollViewUITableViewUITextViewUIView

これは良い計画のように聞こえますか、それともそれだけの価値がありますか? 他に何かアイデアはありますか?

4

2 に答える 2

2

これは少し古い記事ですが、firstResponder メソッドを使用してビューにスライドアップを指示する素晴らしい記事です。個人的には、UITextField を親コンテナーに入れて、すべて上に移動するのが好きです。ただし、UITextField はキーボードのすぐ上で「感じる」ので、そこにすべてを入れて上に移動することはお勧めしません。しかし、私は背景や特定のアイテムが UITextField とともに上に移動するのが好きです。

以下を参照してください: http://cocoawithlove.com/2008/10/sliding-uitextfields-around-to-void.html

これは、画面のセクション (上、中、下) に基づいてフィールドを上に移動する優れた実装です。非常にうまく機能します。最新の SDK に合わせて更新する必要があるかもしれませんが、かなり簡単なはずです。

于 2012-06-07T03:04:35.327 に答える
0

これを試してみると、この機能を実装する BaseViewController を、それから継承するすべてのものに対して機能するようにするには、UIViewController のビュー プロパティの上に別のビューをアタッチして機能させる必要があることに気付きました。理由は、キーボードが表示されたときに UIViewController のビュー プロパティを押し上げた場合、アプリがアクティブな状態から戻って乱雑になると、それ自体がリセットされるためです。

ただし、これに関する問題は、すべての子クラスで、通常のビュー プロパティではなく、この新しいビュー プロパティにサブビューをアタッチする必要があることです。また、おそらく BaseViewController クラスから継承するカスタム UITableViewController を作成して、キーボード通知メソッドを継承できるようにする必要があります。

最終的に、さまざまなシナリオで UIViewController のプロパティの上に別のビューを配置することは、最悪のアイデアではないことがわかりました。カスタム UITableViewController を作成することも、それほど大したことではありません。したがって、アプリに多数のテキスト フィールドがある場合、これは最悪の方法ではない可能性があります。

于 2012-06-24T09:47:31.957 に答える