1

これは操作の順序の問題です

NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];    
[nc addObserver:self 
       selector:@selector(keyboardWillShow:) 
           name:UIKeyboardWillShowNotification 
         object:nil];
[nc addObserver:self 
       selector:@selector(keyboardWillHide:) 
           name:UIKeyboardWillHideNotification 
         object:nil];

そして、テキスト ボックスを UITableViewCell に追加します。

[textField addTarget:self 
              action:@selector(textFieldBegin:) 
    forControlEvents:UIControlEventEditingDidBegin];

[cell addSubview:textField];

textFieldBegin では、scrollToRowAtIndexPath を編集中のセルに移動します。
keyboardWillShow では、tableView のフレームを調整して、キーボードを表示できるようにします。
textFieldBeginはkeyboardWillShowの に呼び出されるため、最初に表示されるときはスクロールする余地がありません。

この見落としを修正する適切な方法はありますか?

4

2 に答える 2

1

開始時に現在のスクロール位置を変数に保存すると、keyboardwillshow 通知で、その変数に保存されている任意の位置に再スクロールできます。

そうすれば、さまざまなアニメーションを所属する場所に保つことができると思います。

于 2011-07-24T23:03:12.063 に答える
0

をリッスンする代わりにUIKeyboardWillShowNotification、UITextFieldDelegate メソッドに反応し、そのメソッドtextFieldDidBeginEditing:でサイズ変更/スクロールできます。これは、キーボードが表示された後に呼び出されるためです。

于 2011-07-24T23:04:06.330 に答える