1

メール、連絡先、SMS などの Apple アプリでは、UIKeyboard がビューの一部として表示されます。UIKeyboard は、別のアニメーションとして表示されるのではなく、ビューと共にスライドします。、、[myTextField becomeFirstResponder]などのさまざまな場所で呼び出す同じ動作を再現しようとしましたが、何も機能しません。viewWillAppear:animatedviewDidLoadloadViewnavigationController:willShowViewController:animated:

UIKeyboardをUITableViewで表示したい場合、これは不可能だと思われるという投稿を読みました(今は投稿が見つかりませんでした)。ただし、この結論は Apple アプリと矛盾しているようです。誰か確認できますか?

解決策はありますか?

4

4 に答える 4

2

どの SDK を構築していますか? 私は間違っているかもしれませんが、Apple は画面上でビュー コントローラーをプッシュする動作と他のアニメーションの動作を改善することについて何か言っていると思いました。

. _ becomeFirstResponder_ viewWillAppear:私は 3.1 SDK に対してビルドしています。

于 2009-12-16T17:15:54.500 に答える
1

私たち iPhone 開発者が使用するキーボードは、独自の に表示されるUIWindowため、アプリでどのビューアクロバットを作成しても、常に下から上にスライドします。

Apple アプリは明らかに、私たちが (まだ) 使用していないキーボードの拡張機能にアクセスできます。

于 2009-12-16T15:03:20.800 に答える
1

UIKeyboardWillShowNotification 通知を受け取ったときに、アニメーション ブロックでビュー フレームのサイズを変更することで、この機能を模倣できます。SMS アプリが最初に SMS 会話を表示するときのように、ビューの下部にテキスト フィールド ビューがあるとします。テキスト フィールドがタップされると、UIKeyboardWillShowNotification がトリガーされ、その時点でそのビューを次のようにアニメーション化できます。

[UIView beginAnimations:nil context:NULL];
[textFieldView setFrame:CGRectMake(0.0f, 416.0f, 320.0f, 216.0f)];
// Also resize your table view
[tableView setFrame:CGRectMake(0.0f, 0.0f, 320.0f, 372.0f)];
[UIView commitAnimations];

UIKeyboardWillHideNotification 通知を受け取った場合は、ビュー フレームをリセットできます。

ここではフレームの正確な位置がわからないので、自分で計算する必要がありますが、これで基本的なアイデアが得られるはずです。ビュー フレームをアニメーションの後に配置する場所を考えて、フレームをアニメーション ブロック内に設定します (つまり、-beginAnimations、-commitAnimations)。

よろしくお願いします。

于 2009-12-16T15:46:44.800 に答える