From 619f68cbec678ece6dad902562123c313d7250d1 Mon Sep 17 00:00:00 2001 From: tanghai Date: Wed, 28 Apr 2021 10:28:13 +0800 Subject: [PATCH] Update UITextField+BlocksKit.m fix SEGV_ACCERR BlocksKit -[A2DynamicUITextFieldDelegate textFieldShouldBeginEditing:] --- BlocksKit/UIKit/UITextField+BlocksKit.m | 33 +++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/BlocksKit/UIKit/UITextField+BlocksKit.m b/BlocksKit/UIKit/UITextField+BlocksKit.m index ea936cd37..f08abf3b5 100644 --- a/BlocksKit/UIKit/UITextField+BlocksKit.m +++ b/BlocksKit/UIKit/UITextField+BlocksKit.m @@ -20,6 +20,11 @@ - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField { BOOL ret = YES; id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return ret; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldShouldBeginEditing:)]) ret = [realDelegate textFieldShouldBeginEditing:textField]; BOOL (^block)(UITextField *) = [self blockImplementationForMethod:_cmd]; @@ -31,6 +36,11 @@ - (BOOL)textFieldShouldBeginEditing:(UITextField *)textField - (void)textFieldDidBeginEditing:(UITextField *)textField { id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldDidBeginEditing:)]) [realDelegate textFieldDidBeginEditing:textField]; void (^block)(UITextField *) = [self blockImplementationForMethod:_cmd]; @@ -42,6 +52,11 @@ - (BOOL)textFieldShouldEndEditing:(UITextField *)textField { BOOL ret = YES; id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return ret; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldShouldEndEditing:)]) ret = [realDelegate textFieldShouldEndEditing:textField]; BOOL (^block)(UITextField *) = [self blockImplementationForMethod:_cmd]; @@ -53,6 +68,11 @@ - (BOOL)textFieldShouldEndEditing:(UITextField *)textField - (void)textFieldDidEndEditing:(UITextField *)textField { id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldDidEndEditing:)]) [realDelegate textFieldDidEndEditing:textField]; void (^block)(UITextField *) = [self blockImplementationForMethod:_cmd]; @@ -64,6 +84,11 @@ - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRang { BOOL ret = YES; id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textField:shouldChangeCharactersInRange:replacementString:)]) ret = [realDelegate textField:textField shouldChangeCharactersInRange:range replacementString:string]; BOOL (^block)(UITextField *, NSRange, NSString *) = [self blockImplementationForMethod:_cmd]; @@ -76,6 +101,9 @@ - (BOOL)textFieldShouldClear:(UITextField *)textField { BOOL ret = YES; id realDelegate = self.realDelegate; + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return; + } if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldShouldClear:)]) ret = [realDelegate textFieldShouldClear:textField]; BOOL (^block)(UITextField *) = [self blockImplementationForMethod:_cmd]; @@ -88,6 +116,11 @@ - (BOOL)textFieldShouldReturn:(UITextField *)textField { BOOL ret = YES; id realDelegate = self.realDelegate; + + if (realDelegate && [realDelegate isKindOfClass:NSClassFromString(@"UIEditUserWordController")]) { + return ret; + } + if (realDelegate && [realDelegate respondsToSelector:@selector(textFieldShouldReturn:)]) ret = [realDelegate textFieldShouldReturn:textField]; BOOL (^block)(UITextField *) = [self blockImplementationForMethod:_cmd];