UITextField clear button use with screen animation
当用户输入文本字段时,我有一个执行动画的屏幕(向上移动屏幕),以便在输入数据时保持可见,然后在用户输入数据后向下移动。 我遇到的问题是当用户尝试使用文本框内的清除按钮时(使用site_TextField.clearButtonMode = UITextFieldViewModeAlways设置)。 按下清除按钮时文本字段的流程应为:
textFieldShouldEndEditing - > textFieldDidEndEditing - > textFieldShouldClear - > textFieldShouldBeginEditing - > textFieldDidBeginEditing
但是,textFieldDidEndEditing方法是调用动画的位置,执行动画时,上面的序列停止,并且不调用textFieldShouldClear。 我希望这是一件简单的事,我只是想念。 任何输入都表示赞赏!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | - (BOOL)textFieldShouldBeginEditing:(UITextField *) textField { NSLog(@"In textFieldShouldBeginEditing"); return YES; } - (void)textFieldDidBeginEditing:(UITextField *)textField { if (textField == site_TextField || textField == phone_TextField) { [self animateTextField: textField up: YES]; } } - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { NSLog(@"In textFieldShouldEndEditing"); return YES; } - (void)textFieldDidEndEditing:(UITextField *)textField { if (textField == site_TextField || textField == phone_TextField) { [self animateTextField: textField up: NO]; } } - (BOOL)textFieldShouldClear:(UITextField *)textField { NSLog(@"In textFieldShouldClear"); return YES; } - (void) animateTextField: (UITextField*) textField up: (BOOL) up { if (textField != site_TextField && textField != phone_TextField) { return; } int movementDistance = 0; if (textField == site_TextField) { movementDistance = 100; } else if (textField == phone_TextField) { movementDistance = 170; } int movement = (up ? -movementDistance : movementDistance); [UIView animateWithDuration:0.3 delay:0.0 options: UIViewAnimationOptionAllowUserInteraction animations:^{ self.view.frame = CGRectOffset(self.view.frame, 0, movement); } completion:^(BOOL finished){ }]; } |
我怀疑第一个