ios - 单击屏幕左边缘的按钮时不突出显示,但触发事件

标签 ios

- (void)viewDidLoad {
    [super viewDidLoad];

    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 20, 400, 200)];
    [btn setTitle:@"123" forState:UIControlStateNormal];
    [btn setTitle:@"234" forState:UIControlStateHighlighted];
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [btn setBackgroundColor:[UIColor grayColor]];
    [btn addTarget:self action:@selector(test11) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:btn];
}

- (void)test11 {
    NSLog(@"xxxxxxxxxxxxxx");
}

当我单击屏幕左侧的按钮时,test11正在工作但不是高亮。当我点击另一个区域的按钮时,test11正在工作和高亮。不同的设备和 iOS 版本的行为不同:
  • iPhone 6s plus:iOS 9.2.2 和 9.3.2 不突出显示
  • iphone 7:不突出显示
  • iphone 6 plus:使用 iOS 10.1 突出显示
  • 所有模拟器都高亮
  • 最佳答案

    我了解问题是当您点击按钮的最左侧时,它没有显示触摸突出显示?

    这是因为按钮上的触摸处理与屏幕边缘手势识别器冲突,因此在点击完成之前不会转换到已识别状态。

    如果你考虑一下:

  • 用户手指向下触摸,它可能是轻敲或屏幕边缘平移。
  • 用户按住手指(这里你想要触摸突出显示),仍然不确定触摸是点击还是平移(用户仍然可以横向平移)
  • 用户松开手指,系统现在知道触摸是轻击,因此可以为其触发事件。 3.

  • 检查您的层次结构中还有哪些其他识别器处于事件状态,如果您有 UINavigationController 它默认有一个左屏幕边缘识别器用于后退手势。这通常是这个问题的罪魁祸首。如果需要,您可以禁用此识别器,或者实现它的委托(delegate)以使其与您的按钮一起玩。

    关于ios - 单击屏幕左边缘的按钮时不突出显示,但触发事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42639508/

    相关文章:

    ios - 以编程方式将栏按钮项目图像设置为系统项目—Swift

    ios - 如何平铺 Sprite 节点的纹理?

    android - 如何让 AWS Pinpoint Analytics 使用 Wifi 或蜂窝数据

    ios - 单击按钮之前读取数据库信息

    ios - 如何在标签文本之间包含 png 图像

    ios - 在 M1 上存档时 PhaseScriptExecution Embed Pod 失败

    ios - 无法在我的 iPhone 上安装新的 Diawi 链接

    ios - Paypal 并行自适应支付验证无法记住买家

    ios - 什么是 XCode Interface Builder "Document"部分

    ios - 从Firebase动态链接进行的网址检测未返回iOS