Fixed single-character cuts being mistaken for backspace presses

//FREEBIE
pull/1/head
Craig Gidney 11 years ago committed by Frederic Jacobs
parent 03ce3635cb
commit ae50395297

@ -381,10 +381,13 @@
NSString* textBeforeChange = textField.text;
// backspacing should skip over formatting characters
bool isBackspace = string.length == 0 && range.length == 1;
UITextPosition *posIfBackspace = [textField positionFromPosition:textField.beginningOfDocument
offset:(NSInteger)(range.location + range.length)];
UITextRange *rangeIfBackspace = [textField textRangeFromPosition:posIfBackspace toPosition:posIfBackspace];
bool isBackspace = string.length == 0 && range.length == 1 && [rangeIfBackspace isEqual:textField.selectedTextRange];
if (isBackspace) {
NSString* digits = _phoneNumberTextField.text.digitsOnly;
NSUInteger correspondingDeletePosition = [PhoneNumberUtil translateCursorPosition:range.location+range.length
NSString* digits = textBeforeChange.digitsOnly;
NSUInteger correspondingDeletePosition = [PhoneNumberUtil translateCursorPosition:range.location + range.length
from:textBeforeChange
to:digits
stickingRightward:true];
@ -406,10 +409,10 @@
from:textAfterChange
to:textAfterReformat
stickingRightward:isJustDeletion];
_phoneNumberTextField.text = textAfterReformat;
UITextPosition *pos = [_phoneNumberTextField positionFromPosition:_phoneNumberTextField.beginningOfDocument
offset:(NSInteger)cursorPositionAfterReformat];
[_phoneNumberTextField setSelectedTextRange:[_phoneNumberTextField textRangeFromPosition:pos toPosition:pos]];
textField.text = textAfterReformat;
UITextPosition *pos = [textField positionFromPosition:textField.beginningOfDocument
offset:(NSInteger)cursorPositionAfterReformat];
[textField setSelectedTextRange:[textField textRangeFromPosition:pos toPosition:pos]];
return NO; // inform our caller that we took care of performing the change
}

Loading…
Cancel
Save