ビューとテーブルビューの分割ビューコントローラーがあります。このテーブル ビューには、テキスト フィールドを持つカスタム セルがあります。セルがいくつになるかわからないので、自動生成します。そして、FirstResponderになったら、テキストフィールドにスクロールしようとしています。私はこのようなことを試しました:
-(void) textFieldDidBeginEditing:(UITextField *)textField {
CGPoint focusOnTextField = CGPointMake(0, 300 + textField.frame.origin.y);
[scroller setContentOffset: focusOnTextField animated: YES];
}
300px - TableView の開始位置。すべて問題ないように見えますが、textField.frame.origin.y
常に 0 に等しくなります (同様に、bounds.origin.y
ところで)。
テキストフィールドがアクティブなセルの位置を取得してから、onなどに置き換えると問題を解決できると思いtextField.frame.origin.y
ましcell.frame.origin.y
た。
================================================== =================
テーブルビューのスクロールが無効になっていることを忘れていました。私はあなたのアドバイスとコード例に従い、そのように解決します:
- (UITableViewCell *)cellWithSubview:(UIView *)subview {
while (subview && ![subview isKindOfClass:[UITableViewCell self]])
subview = subview.superview;
return (UITableViewCell *)subview;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField {
UITableViewCell *activeCell = [self cellWithSubview:textField];
float offsetValueY = 200 + activeCell.origin.y;
CGPoint focusOnTextField = CGPointMake(0, offsetValueY);
[scroller setContentOffset:focusOnTextField animated:YES];
}
そして、何を知っていますか?それは働いている!:-) しかし、それは新しい問題を引き起こします。テキストフィールドの編集を開始すると、最初にスクローラーが一番上にジャンプしてから、正しい位置に移動します。書いてみる[scroller setContentOffset:focusOnTextField animated:NO];
とこの問題はなくなりますが、スクローラーの動きがスムーズではありません。そして、これは私にとって悪いことです:-)では、どうすれば解決できるのでしょうか?