查看iOS视图层级并修改UIsearchBar的cancel按钮不失去作用

时间:2023-03-08 22:38:37
查看iOS视图层级并修改UIsearchBar的cancel按钮不失去作用
(lldb) po [self.searchBar recursiveDescription]
<UISearchBar: 0x7ff35854f370; frame = ( ; ); text = 'p'; opaque = NO; gestureRecognizers = <NSArray: 0x7ff358550380>; layer = <CALayer: 0x7ff35854f890>>
| <UIView: 0x7ff35854fb90; frame = ( ; ); clipsToBounds = YES; autoresize = W+H; layer = <CALayer: 0x7ff35854fd00>>
| | <UISearchBarBackground: 0x7ff3585504d0; frame = ( ; ); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7ff358550950>>
| | <UISearchBarTextField: 0x7ff358551480; frame = ( ; ); text = 'p'; clipsToBounds = YES; opaque = NO; gestureRecognizers = <NSArray: 0x7ff358553e80>; layer = <CALayer: 0x7ff358551850>>
| | | <_UISearchBarSearchFieldBackgroundView: 0x7ff358785900; frame = ( ; ); opaque = NO; autoresize = W+H; userInteractionEnabled = NO; layer = <CALayer: 0x7ff3587432a0>>
| | | <UIButton: 0x7ff358562e00; frame = (270.5 4.5; ); opaque = NO; layer = <CALayer: 0x7ff358562d00>>
| | | | <UIImageView: 0x7ff358493320; frame = (2.5 2.5; ); clipsToBounds = YES; opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7ff3584934d0>>
| | | <UIImageView: 0x7ff358784340; frame = ( 7.5; ); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x7ff35877b4d0>>
| | | <UITextFieldLabel: 0x7ff3585524b0; frame = (- -; ); text = 'p'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ff3585526c0>>
| | <UINavigationButton: 0x7ff358470020; frame = ( ; ); opaque = NO; layer = <CALayer: 0x7ff35840ad70>>
| | | <UIButtonLabel: 0x7ff35a82e430; frame = ( ; 20.5); text = 'Cancel'; opaque = NO; userInteractionEnabled = NO; layer = <_UILabelLayer: 0x7ff35a82e6e0>> //UINavigationButton是私有类,可以使用NSClassFromString转换过来
for (UIView *view in [[[self.searchBar subviews] objectAtIndex:] subviews]) { if ([view isKindOfClass:[NSClassFromString(@"UINavigationButton") class]]) {
UIButton *btn = (UIButton *)view;
btn.enabled = YES;
} }