ipadアプリを作っています。アプリには、ユーザーが入力できるカスタム セルを含む UITableView があります。唯一の問題は、下のセルの 1 つを押すと、キーボードが表示されてセルがブロックされて見えなくなることです。キーボードのすぐ上のセルを押すと、 UITableView が上にスクロールし、さらに 1 つのセルが何度も表示されるので、入力内容を確認できます。ありがとう。
画像: http: //i.stack.imgur.com/Kn4CT.png
ipadアプリを作っています。アプリには、ユーザーが入力できるカスタム セルを含む UITableView があります。唯一の問題は、下のセルの 1 つを押すと、キーボードが表示されてセルがブロックされて見えなくなることです。キーボードのすぐ上のセルを押すと、 UITableView が上にスクロールし、さらに 1 つのセルが何度も表示されるので、入力内容を確認できます。ありがとう。
画像: http: //i.stack.imgur.com/Kn4CT.png
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 は、タグを安全に保つためのものです。これが機能するために絶対に必要というわけではありません。