Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 单击屏幕左边缘的按钮时不突出显示,但触发事件_Ios - Fatal编程技术网

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

Ios 单击屏幕左边缘的按钮时不突出显示,但触发事件,ios,Ios,当我单击屏幕左侧的按钮时,test11正在工作,但没有突出显示。当我单击另一个区域中的按钮时,test11正在工作并高亮显示。不同的设备和iOS版本表现不同: iPhone 6s plus:在iOS 9.2.2和9.3.2中不突出显示 iphone7:不突出显示 iPhone6Plus:iOS 10.1的亮点 所有模拟器都高亮显示 我知道问题在于,当您点击按钮的最左侧时,它没有显示触摸突出显示 这是因为按钮上的触摸处理与屏幕边缘手势识别器冲突,因此在轻触完成之前不会转换到已识别状态 如果你仔细

当我单击屏幕左侧的按钮时,
test11
正在工作,但没有突出显示。当我单击另一个区域中的按钮时,
test11
正在工作并高亮显示。不同的设备和iOS版本表现不同:

  • iPhone 6s plus:在iOS 9.2.2和9.3.2中不突出显示
  • iphone7:不突出显示
  • iPhone6Plus:iOS 10.1的亮点
  • 所有模拟器都高亮显示

我知道问题在于,当您点击按钮的最左侧时,它没有显示触摸突出显示

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

如果你仔细想想:

  • 用户按下手指,它可能是一个轻敲或屏幕边缘平移
  • 用户按住手指(此处您想要突出显示触摸),仍然不确定触摸是轻触还是平移(用户仍然可以侧向平移)
  • 用户松开手指,系统现在知道触摸是轻触,因此可以触发事件。三,

  • 检查层次结构中其他激活的识别器,如果您有UINavigationController,则默认情况下,它有一个左屏幕边缘识别器用于后退手势。这往往是这个问题的罪魁祸首。如果需要,您可以禁用此识别器,或者实现它的委托以使其与您的按钮配合。

    尝试为选中的uicontrol状态添加更多标题/颜色。我不确定。请尝试一下,我只是做个测试,没关系,你有其他代码不同的iphone效果不一样。6系统9、2、2和9.3.2的SPlus不高。iPhone7不是亮点。但在iPhone6plus中,system 10.1是一大亮点;修复代码格式和清晰度感谢George Green如果我关闭系统的3D触控,结果会高亮显示;但在xcode中,我所做的可以在高亮度下工作
    - (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");
    }