0

ipadアプリを作っています。アプリには、ユーザーが入力できるカスタム セルを含む UITableView があります。唯一の問題は、下のセルの 1 つを押すと、キーボードが表示されてセルがブロックされて見えなくなることです。キーボードのすぐ上のセルを押すと、 UITableView が上にスクロールし、さらに 1 つのセルが何度も表示されるので、入力内容を確認できます。ありがとう。

画像: http: //i.stack.imgur.com/Kn4CT.png

4

1 に答える 1

0

uitextfield に入力していると仮定して、textfield デリゲート メソッドを実装します。

キーボードが表示されているときのキーボードの高さを把握します。

編集:

これは私が問題を解決する方法です:

一意の番号でフィールドされた各テキストにタグを付けます (baseConstantInteger を保持し、タグが完全に一意であることを確認してください)。

baseConstant は何でもかまいません、仮定しましょうbaseConstantInteger = 500;

メソッドの各セルに対してcellForRowAtIndexPath、カスタムセルセットで

textField.tag = baseConstantInteger+indexPath.row

その後

- (void)textFieldDidBeginEditing:(UITextField *)textField
{   
    int clickedRow = textField.tag - baseConstantInteger;
    [self.theTableView scrollToRowAtIndexPath:(indexPath based on clickedRow) atScrollPosition:UITableViewScrollPositionMiddle animated:NO];
    [UIView animateWithDuration:0.4
                     animations:^{
                         theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height-keyBoardHeight);
                     }
     ];
}

そして返されたとき (didEndEditing と同様)

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [UIView animateWithDuration:0.2
                     animations:^{
                         theTableView.frame = CGRectMake(theTableView.frame.origin, theTableView.contentSize.width, theTableView.frame.size.height+keyBoardHeight);
                     }
     ];
    [textField resignFirstResponder];
    return NO/YES;
}

ps: baseConstantInteger は、タグを安全に保つためのものです。これが機能するために絶対に必要というわけではありません。

于 2013-01-13T00:29:56.467 に答える