0

内部に textFields を含む tableView があり、textFieldDidBeginEditing メソッドが呼び出されたときに tableView を上にスライドさせるアニメーションがあります。これが私のコードです:

- (void)textFieldDidBeginEditing:(UITextField *)textField {
    self.headerView.alpha = 0.2;
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.18];
    [UIView setAnimationDelegate:self];
    self.theTableView.frame = CGRectMake(0, 130, 320, 209);
    [UIView commitAnimations];
}

問題は、セルの 1 つがタップされるたびにアニメーションが発生することですが、最初にセルがタップされたときにのみアニメーションが発生するようにしたいです。そこで、tableView が (0, 130) 座標にあるかどうかを確認する if ステートメントを作成する必要があると考えていました。誰も私がこれを行う方法を知っていますか?

4

1 に答える 1

1

正確な比較にCGPointEqualToPoint()は、で十分です。より広い比較(ビューの長方形に指定されたポイントが含まれているかどうかを確認する)にCGRectContainsPoint()は、これが最適です。

もちろん、これはすべて少しです。ビューをサブクラス化し、フラグを付けて、スライドしたかどうかを追跡します。コードをより自己完結型に保つだけでなく、ビューのロジックをコントローラーから遠ざけることができます。

于 2013-03-10T04:30:27.860 に答える