1. 某些UITextField只为了摆数据,还有响应点击,为了避免频繁出现键盘,所以把UITextField的人机交互(userInteractionEnabled)给关闭了
  2. 此时,给UITextField注册Tap手势,失败
  3. 查资料,没有交互功能的textfield是不能注册手势的,只能注册给其父view,成功
  4. 本例中其父view就是当前窗体,于是发现这个窗体里的按钮都不响应点击事件了(虽然点击的时候能高亮)
  5. 得知可以用手势的代理方法:
    - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
        return ([[touch.view class] isSubclassOfClass:[UIButton class]]) ? NO : YES;
    }

这个方法不靠谱,我点击的是UIToolbar里的UIBarButtonItem,打印出来的却是UIToolbarTextButton,这个类我没找到,结果只能用字符串匹配了。

if ([[NSString stringWithFormat:@”%@”,[touch.view class]] isEqualToString:@”UIToolbarTextButton”]) {
        return NO;
    }

巨大的坑啊

相关文章:

  • 2021-10-09
  • 2021-07-27
  • 2022-12-23
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-01-23
  • 2021-10-20
  • 2021-05-24
  • 2022-12-23
  • 2021-09-22
  • 2021-08-17
相关资源
相似解决方案