touchesEnded 当同时用 2 个手指点击屏幕的任何部分时调用

touchesEnded called when any part of the screen is tapped with 2 fingers at the same time

我在触摸事件中发现了这种最奇怪的行为。 目标视图甚至还没有分配,但 touchesEnded 将通过用 2 个手指而不是 1 个手指点击屏幕的任何部分来调用,必须是 2 个...然后它会跳过 touchesBegan,调用 touchesEnded。 我什至检查了目标视图的 userInteraction 是否设置为 YES 但没有,显然它设置为 NO 因为默认情况下它是 NO 但无论如何都没有分配。

当目标视图已经分配和定位等时,所有这一切都不会发生

有人遇到过这种情况吗?? 为什么会发生这种情况,我是否必须分配 属性 以防止它的触摸事件被疯狂地随机调用? 还有为什么这种奇怪的行为需要同时用两根手指而不是一次敲击....这并不重要,但我很好奇。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [[event allTouches] anyObject];

if (touch.view == self.buttonStartButton) {

    NSInteger levelUp = [self.levelModel checkForLevelUp];
    if (levelUp == 0) {
        [self byeGameContainer];
    }
    else {
        [self.delegate levelingUp];
    }
}}

因此,尝试分配目标并将其框架设置在屏幕边界之外并没有奏效 touchesBegan 和 touchesEnded 仍然会在屏幕的任何部分被点击时被调用。我什至设置了它的 userInteractionEnabled = NO 但触摸事件仍然会被调用。

完成了这个并且确实有效。 通过检查目标 属性 是否已分配,触摸事件最终不会在不应该被调用时被调用 to/shouldn。

-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{

UITouch *touch = [[event allTouches] anyObject];

if (touch.view == self.buttonStartButton && self.buttonStartButton != nil) {

NSInteger levelUp = [self.levelModel checkForLevelUp];
if (levelUp == 0) {
    [self byeGameContainer];
}
else {
    [self.delegate levelingUp];
}

}}