-2

ビューコントローラーを作成しました。テキスト ラベルを含む一連のカスタム セルを含むテーブルビューをセットアップします。キーボードが表示されたときに、テーブルビューのフレームのサイズが自動的に変更されません。インターフェイスビルダーに欠けているチェックボックスはありますか?

どのような設定を確認すればよいですか?

4

2 に答える 2

11

ビュー コントローラーに次のキーボード通知イベントを追加します。

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];

キーボード通知に従って、tableView のフレームのサイズを変更します。

- (void)keyboardDidShow:(NSNotification *)notification
{
    NSDictionary *userInfo = [notification userInfo];
    CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    CGRect frame = CGRectMake(self.tableView.frame.origin.x, 
                              self.tableView.frame.origin.y, 
                              self.tableView.frame.size.width, 
                              self.tableView.frame.size.height - size.height);
    self.tableView.frame = frame;
}

- (void)keyboardWillHide:(NSNotification *)notification
{
    NSDictionary *userInfo = [notification userInfo];
    CGSize size = [[userInfo objectForKey: UIKeyboardFrameEndUserInfoKey] CGRectValue].size;
    self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, 
                                      self.tableView.frame.origin.y, 
                                      self.tableView.frame.size.width, 
                                      self.tableView.frame.size.height + size.height);
}

タップ セルを上にスクロールする場合は、textFieldDidBeginEditing:メソッドで次の変更を行います。

- (void) textFieldDidBeginEditing:(UITextField *)textField {
    UITableViewCell *cell = (UITableViewCell*) [[textField superview] superview];
    [self.tableView scrollToRowAtIndexPath:[tView indexPathForCell:cell] atScrollPosition:UITableViewScrollPositionTop animated:YES];
} 
于 2012-11-29T18:24:21.633 に答える
2

を使用している場合はUIViewController、キーボードが表示されたときにサイズ変更コードを記述する必要があります。UIKeyboardWillShowNotification, UIKeyboardDidShowNotification, UIKeyboardWillHideNotification, UIKeyboardDidHideNotificationテーブルビューのサイズを適切に変更できます。

于 2012-11-29T18:24:29.683 に答える