0

我的问题如下:

我在标准视图控制器中显示带有附件的消息视图。当用户按住附件图标时,它会在屏幕上显示图像,当用户放手时,图像就会消失。这是为了在用户查看图像时帮助检测屏幕截图。

我使用长按手势识别器来检测触摸,然后使用 touchesEnded 或 touchesCancelled 来检测触摸的释放。

当用户用第二根手指按下屏幕时会出现我的问题,因为没有报告第二次触摸的释放。代码如下,方法按此顺序调用:

  1. 第一次长按 -> attachmentLongPressed 调用
  2. 第二次长按 -> attachmentLongPressed 调用
  3. 释放第一根手指 -> touchesEnded 调用
  4. 松开第二根手指 -> 什么都没有

    -(void)attachmentImageLongPressed:(UIImageView *)sender{
    
        if(!self.isAttachmentOpen){
    
            [self setAttachmentOpen:YES];
    
            // Show image...
    
        }
    }
    
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    
        [self setAttachmentOpen:NO];
    
        // Remove image from view
    
    }
    
    -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
    {
        if(self.isAttachmentOpen){
    
            [self screenshotDetected];
    
        }
    }
    

结果是图像视图留在屏幕上,无法将其关闭。有人有什么建议吗?

4

1 回答 1

0

我认为松开第二根手指时应该将其称为 touchesEnded。您可以记录所有回调中的所有触摸,以找出正在调用的方法,

但是,长按手势可能会延迟触摸结束事件,因此请尝试将 delaysTouchesEnded 设置为 FALSE。

手势LongPressed.delaysTouchesEnded = FALSE

于 2013-03-06T00:39:25.403 回答