diff --git a/Stripe/STPPaymentCardTextField.m b/Stripe/STPPaymentCardTextField.m index 1c46280c64e..984c39b2655 100644 --- a/Stripe/STPPaymentCardTextField.m +++ b/Stripe/STPPaymentCardTextField.m @@ -552,6 +552,7 @@ - (BOOL)resignFirstResponder { [super resignFirstResponder]; BOOL success = [self.currentFirstResponderField resignFirstResponder]; [self layoutViewsToFocusField:nil + becomeFirstResponder:NO animated:YES completion:nil]; [self updateImageForFieldType:STPCardFieldTypeNumber]; @@ -582,6 +583,7 @@ - (void)clear { [self updateCVCPlaceholder]; __weak typeof(self) weakSelf = self; [self layoutViewsToFocusField:@(STPCardFieldTypePostalCode) + becomeFirstResponder:YES animated:YES completion:^(__unused BOOL completed){ __strong typeof(self) strongSelf = weakSelf; @@ -694,6 +696,7 @@ behaves identically to user entering text (and will have the same forwarding } } else { [self layoutViewsToFocusField:nil + becomeFirstResponder:YES animated:NO completion:nil]; } @@ -1159,6 +1162,7 @@ - (STPFormTextField *)buildTextField { typedef void (^STPLayoutAnimationCompletionBlock)(BOOL completed); - (void)layoutViewsToFocusField:(NSNumber *)focusedField + becomeFirstResponder:(BOOL)shouldBecomeFirstResponder animated:(BOOL)animated completion:(STPLayoutAnimationCompletionBlock)completion { @@ -1168,7 +1172,9 @@ - (void)layoutViewsToFocusField:(NSNumber *)focusedField && ![self.focusedTextFieldForLayout isEqualToNumber:@(STPCardFieldTypeNumber)] && ([self.viewModel validationStateForField:STPCardFieldTypeNumber] != STPCardValidationStateValid)) { fieldtoFocus = @(STPCardFieldTypeNumber); - [self.numberField becomeFirstResponder]; + if (shouldBecomeFirstResponder) { + [self.numberField becomeFirstResponder]; + } } if ((fieldtoFocus == nil && self.focusedTextFieldForLayout == nil) @@ -1400,6 +1406,7 @@ - (void)textFieldDidBeginEditing:(UITextField *)textField { BOOL isMidSubviewEditingTransition = [self getAndUpdateSubviewEditingTransitionStateFromCall:STPFieldEditingTransitionCallSiteDidBegin]; [self layoutViewsToFocusField:@(textField.tag) + becomeFirstResponder:YES animated:YES completion:nil]; @@ -1472,6 +1479,7 @@ - (void)textFieldDidEndEditing:(UITextField *)textField { if (!isMidSubviewEditingTransition) { [self layoutViewsToFocusField:nil + becomeFirstResponder:NO animated:YES completion:nil]; [self updateImageForFieldType:STPCardFieldTypeNumber];