iPhoneアプリには、標準のキーボードと同じように機能するカスタムキーボードがあります。カスタムテキストフィールドがファーストレスポンダーになると表示され、フィールドがファーストレスポンダーを辞任すると非表示になります。次のように、Genericとその非表示の対応物も投稿しUIKeyboardWillShowNotification
てUIKeyboardDidShowNotification
います。
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithCapacity:5];
[userInfo setObject:[NSValue valueWithCGPoint:self.center]
forKey:UIKeyboardCenterBeginUserInfoKey];
[userInfo setObject:[NSValue valueWithCGPoint:shownCenter]
forKey:UIKeyboardCenterEndUserInfoKey];
[userInfo setObject:[NSValue valueWithCGRect:self.bounds]
forKey:UIKeyboardBoundsUserInfoKey];
[userInfo setObject:[NSNumber numberWithInt:UIViewAnimationCurveEaseOut]
forKey:UIKeyboardAnimationCurveUserInfoKey];
[userInfo setObject:[NSNumber numberWithDouble:thisAnimDuration]
forKey:UIKeyboardAnimationDurationUserInfoKey];
[[NSNotificationCenter defaultCenter] postNotificationName:UIKeyboardWillShowNotification
object:nil
userInfo:userInfo];
UIViewController
このコードは機能しており、サブクラスで使用しています。
iPhone OS 3.0以降、UITableViewController
システムキーボードが表示および非表示になると、tableViewのサイズが自動的に変更されます。私は今3.0に対してコンパイルしているだけで、同じ通知を投稿しているので、カスタムキーボードが表示された場合、コントローラーもテーブルのサイズを変更する必要があると思いました。しかし、そうではありません。テーブルビューコントローラは、入力フィールドのデリゲートとして設定されます。
なぜこれが当てはまるのか誰かが知っていますか?誰かが同様の何かをうまく実装しましたか?
カスタム入力フィールドに沿って標準の入力フィールドがあるので、ユーザーがフィールドを変更すると、標準キーボードが非表示になり、カスタムキーボードが表示されます。tableViewのサイズをフルハイトに変更せず、カスタムメソッドを使用してサイズを変更し直す必要がない場合は便利です。