因?yàn)?stemLabel 里面自己本來就有手勢, 然后又添加了IQKeyboardManager, 導(dǎo)致二者手勢沖突.
在添加 IQKeyboardManager 的VC上點(diǎn)擊 textField,然后輸入文字
輸入以后, stemLabel 的dropdownview 展開的tableview 無法點(diǎn)擊, 導(dǎo)致其他界面的tableview也無法點(diǎn)擊
解決方法 1
去掉這句代碼 manager.shouldResignOnTouchOutside
代碼如下
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
IQKeyboardManager *manager = [IQKeyboardManager sharedManager];
_isKeyboardManagerEnabled = manager.isEnabled;
manager.enable = YES;
//manager.shouldResignOnTouchOutside = YES;
}
-(void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[[IQKeyboardManager sharedManager] setEnable:_isKeyboardManagerEnabled];
}
解決方法 2
或者在 IQKeyboardManager 添加代碼
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch method, adding code
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
像這樣修改
/** To not detect touch events in a subclass of UIControl, these may have added their own selector for specific work */
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([NSStringFromClass([touch.view class]) isEqualToString:@"UITableViewCellContentView"]) {
return NO;
}
// Should not recognize gesture if the clicked view is either UIControl or UINavigationBar(<Back button etc...) (Bug ID: #145)
return ([[touch view] isKindOfClass:[UIControl class]] || [[touch view] isKindOfClass:[UINavigationBar class]]) ? NO : YES;
}