Skip to content

Commit 49b3f90

Browse files
authored
Merge pull request wix#2458 from wix/TextInputWoes
Fix replace text causing crashes in certain scenarios
2 parents 3b1521d + 646eb0d commit 49b3f90

File tree

1 file changed

+14
-15
lines changed

1 file changed

+14
-15
lines changed

detox/ios/Detox/Actions/UIView+DetoxActions.m

Lines changed: 14 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,6 @@ - (void)dtx_pinchWithScale:(CGFloat)scale velocity:(CGFloat)velocity angle:(CGFl
251251
}
252252

253253
UIView* firstResponder = _isViewOrDescendantFirstResponder(view);
254-
255254
if(firstResponder != nil)
256255
{
257256
return firstResponder;
@@ -400,26 +399,26 @@ - (void)dtx_replaceText:(NSString*)text
400399
UIView<UITextInput>* firstResponder = (id)_ensureFirstResponderIfNeeded(self);
401400
_assertFirstResponderSupportsTextInput(firstResponder);
402401

403-
BOOL isControl = [self isKindOfClass:UIControl.class];
404-
BOOL isTextField = [self isKindOfClass:UITextField.class];
405-
BOOL isTextView = [self isKindOfClass:UITextView.class];
406-
UITextView* textView = (UITextView*)self;
402+
BOOL isControl = [firstResponder isKindOfClass:UIControl.class];
403+
BOOL isTextField = [firstResponder isKindOfClass:UITextField.class];
404+
BOOL isTextView = [firstResponder isKindOfClass:UITextView.class];
405+
UITextView* textView = (UITextView*)firstResponder;
407406

408407
if(isControl == YES)
409408
{
410-
[(UIControl*)self sendActionsForControlEvents:UIControlEventEditingDidBegin];
409+
[(UIControl*)firstResponder sendActionsForControlEvents:UIControlEventEditingDidBegin];
411410
}
412411

413412
if(isTextField == YES)
414413
{
415-
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidBeginEditingNotification object:self];
414+
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidBeginEditingNotification object:firstResponder];
416415
}
417416

418417
if(isTextView == YES)
419418
{
420419
if([textView.delegate respondsToSelector:@selector(textViewDidBeginEditing:)])
421420
{
422-
[textView.delegate textViewDidBeginEditing:(id)self];
421+
[textView.delegate textViewDidBeginEditing:textView];
423422
}
424423
}
425424

@@ -428,29 +427,29 @@ - (void)dtx_replaceText:(NSString*)text
428427

429428
UITextRange* range = [firstResponder textRangeFromPosition:beginningOfDocument toPosition:endOfDocument];
430429

431-
[(id<UITextInput>)self replaceRange:range withText:text];
430+
[firstResponder replaceRange:range withText:text];
432431

433432
if(isControl == YES)
434433
{
435-
[(UIControl*)self sendActionsForControlEvents:UIControlEventEditingChanged];
436-
[(UIControl*)self sendActionsForControlEvents:UIControlEventEditingDidEnd];
434+
[(UIControl*)firstResponder sendActionsForControlEvents:UIControlEventEditingChanged];
435+
[(UIControl*)firstResponder sendActionsForControlEvents:UIControlEventEditingDidEnd];
437436
}
438437

439438
if(isTextField == YES)
440439
{
441-
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidChangeNotification object:self];
442-
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidEndEditingNotification object:self];
440+
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidChangeNotification object:firstResponder];
441+
[NSNotificationCenter.defaultCenter postNotificationName:UITextFieldTextDidEndEditingNotification object:firstResponder];
443442
}
444443

445444
if(isTextView == YES)
446445
{
447446
if([textView.delegate respondsToSelector:@selector(textViewDidChange:)])
448447
{
449-
[textView.delegate textViewDidChange:(id)self];
448+
[textView.delegate textViewDidChange:textView];
450449
}
451450
if([textView.delegate respondsToSelector:@selector(textViewDidEndEditing:)])
452451
{
453-
[textView.delegate textViewDidEndEditing:(id)self];
452+
[textView.delegate textViewDidEndEditing:textView];
454453
}
455454
}
456455
}

0 commit comments

Comments
 (0)