私のホームページは、ロゴの にviewController
開きます。次に、2 つのアニメーションを実行します。ロゴを上に翻訳し、. ユーザーがランをクリックし、ビューのフレームをアニメーション化したとき (ユーザーがキーボードでカバーされていたものを表示できるようにするため)。ユーザーがキーボード以外の場所をクリックすると、ビューのフレームがアニメーション化されて元に戻ります。実行後、元の位置に戻ります (アニメーションがアップする前)。これはなぜ発生し、どのように修正すればよいですか? ありがとう。UIImageView
viewDidAppear
UITextField
UITextField textFieldDidBeginEditing
UITextField
textFieldDidEndEditing
textFieldDidEndEditing
UIImageView
static const CGFloat STARTPAGE_ANIMATION_TIME = 0.5;
-(void)viewDidAppear:(BOOL)animated{
NSLog(@"viewDidAppear:");
CGRect logoFrame = logoImage.frame;
logoFrame.origin.y = 130;
[UIImageView animateWithDuration:STARTPAGE_ANIMATION_TIME delay:STARTPAGE_ANIMATION_TIME options:UIViewAnimationCurveEaseInOut animations:^{
logoImage.frame = logoFrame;
} completion:^(BOOL finished) {
NSLog(@"logoImageAnimation");
}];
[UIImageView animateWithDuration:STARTPAGE_ANIMATION_TIME delay:STARTPAGE_ANIMATION_TIME options:UIViewAnimationCurveEaseInOut animations:^{
searchField.alpha = 1;
} completion:^(BOOL finished) {
NSLog(@"searchFieldAnimation");
}];
}
CGFloat ANIMATED_DISTANCE = 200;
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
- (void)textFieldDidBeginEditing:(UITextField *)textField{
NSLog(@"textFieldDidBeginEditing:");
CGRect viewFrame = self.view.frame;
viewFrame.origin.y -= ANIMATED_DISTANCE;
[UIView animateWithDuration:KEYBOARD_ANIMATION_DURATION animations:^{
self.view.frame = viewFrame;
} completion:^(BOOL finished) {
NSLog(@"frameAnimationUp");
}];
}
- (void)textFieldDidEndEditing:(UITextField *)textField{
NSLog(@"textFieldDidEndEditing:");
CGRect viewFrame = self.view.frame;
viewFrame.origin.y += ANIMATED_DISTANCE;
[UIView animateWithDuration:KEYBOARD_ANIMATION_DURATION animations:^{
self.view.frame = viewFrame;
} completion:^(BOOL finished) {
NSLog(@"frameAnimationDown");
}];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
NSLog(@"touchesBegan:withEvent:");
[self.view endEditing:YES];
[super touchesBegan:touches withEvent:event];
}