私のアプリでは、いくつかのカスタムセルを持つUITableViewがあり、UITextFieldを配置しているものがあります。そのUITextFieldは時には問題であるキーボードをブロックしてしまいます。だから私の状況では、私のための問題だった特定のセルにスクロールするのではなく、テーブル全体を移動しようとしています。UITableFieldをスクロールすると、セル内のUITextFieldが表示されますか?
とにかくこのように問題が発生しています。
とにかくこれは、テキストフィールドの表示方法と終了方法のコードです。問題は、UITableViewが決して適切な量を移動しないことです。私は、UITextFieldが現在呼び出されているセルがキーボードのすぐ上にあるように、UITableviewを十分に動かそうとしています。 時には、それは私がセルを見ることができないか、またはテーブルビュー全体が私が全く見ない狂った量を動かすことができないほど上にスクロールアップします。
とにかくここに私のコードはありますが、誰かが間違って見えるのですか?
- (BOOL)textFieldShouldBeginEditing:(UITextField *)thetextField {
CustomCell *cell = (CustomCell*)[[thetextField superview] superview];
CGRect cellRect = [cell convertRect:cell.frame toView:self.view];
float bottomCell = cellRect.origin.y - cellRect.size.height;
if (bottomCell >= keyboardY) {
subtractionAmount = keyboardY - bottomCell;
didMove = YES;
[UIView animateWithDuration:0.4
animations:^{
thetableView.center = CGPointMake(thetableView.center.x, thetableView.center.y + subtractionAmount);
}];
}
return YES;
}
-(BOOL) textFieldShouldReturn:(UITextField *)thetextField {
if (didMove) {
didMove = NO;
[UIView animateWithDuration:0.4
animations:^{
thetableView.center = CGPointMake(thetableView.center.x, thetableView.center.y - subtractionAmount);
}];
}
ありがとうございます!
私はこのチュートリアルからすべてをやっていますが、ちょっと違うので、なぜ上のコードが完全に機能しないのか不思議です。 –