私は多くの UItextField を持っており、アニメーションが気に入っています:
-(void)textFieldDidBeginEditing: (UITextField *)textField{
NSLog(@"sowing keyboard");
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.27];
scroll1.frame = CGRectMake(0, -604, 768, 1004);
[UIView commitAnimations];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.47];
scroll2.frame = CGRectMake(0, 414, 768, 1004);
[UIView commitAnimations];
[UIView animateWithDuration:1.0
animations:^{
self.mapView.alpha=0.0;
}
completion:^(BOOL finished){
self.mapView.hidden=YES;
}];
}
-(void)textFieldDidEndEditing: (UITextField *)textField{
NSLog(@"hiding keyboard");
if (scroll2.frame.origin.y != 414) {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.27];
scroll1.frame = CGRectMake(0, -340, 768, 1004);
[UIView commitAnimations];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.47];
scroll2.frame = CGRectMake(0, 678, 768, 1004);
[UIView commitAnimations];
[self.mapView setHidden:NO];
//fade in
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationDelegate:self];
[self.mapView setAlpha:1.0];
[UIView commitAnimations];
}
}
問題は、フィールドを編集しているときに、別のフィールドに触れて編集を開始すると、コード didEnd と DidBegin が呼び出されることです。どうすればそれを止めることができますか?? これらのアニメーションは、テキスト フィールドの編集を開始し、テキスト フィールドが編集されていない場合にのみ発生し、キーボードを非表示にする必要がある場合 (ユーザーが iPad で DownKey を押した場合) に DidEnd を実行したいと考えています。
何か案は??
私はこれを試しました:
if (scroll2.frame.origin.y != 414) {
...動作しますが、再実行キーを押してもアニメーションは発生しません。