【问题标题】:UIButton with both Touch Up Inside and Touch Repeat?带有 Touch Up Inside 和 Touch Repeat 的 UIButton?
【发布时间】:2013-08-16 19:57:46
【问题描述】:

让按钮能够同时执行Touch Up Inside 操作和Touch Down Repeat 操作的最佳方法是什么?有点像 iPhone 上的 Home 按钮:单击一次进入主屏幕,但快速单击两次打开多任务栏。现在我的按钮已经连接了这两种方法,但是Touch Up Inside 方法(不出所料)在Touch Down Repeat 发生之前被调用。

我可以想出一些方法来解决这个问题(让 Touch Up Inside 方法等待一秒钟,看看在执行之前是否有另一次点击,在第一次点击后让第二个按钮不可见地移动到适当的位置,等等)但是它们似乎都有些hack-y,并且对性能损失和错误持开放态度。我找到了 tapCount 属性,但它是用于 UITouch 而不是 UIButton,所以 if([_buttonAddItems tapCount] > 1) {} else if([_buttonAddItems tapCount] == 1),这似乎是最有效的方法,但不起作用。

这类事情有最佳实践吗?或者如果没有,有没有人有首选的方法来完成这项工作?

【问题讨论】:

    标签: ios uibutton touch-up-inside


    【解决方案1】:

    尝试断开按钮与两个触摸事件的连接,并将两个轻击手势识别器挂接到它。这是一个link to an answer,它解释了如何设置两个手势识别器,以便其中一个识别单击,另一个识别双击:

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doSingleTap)];
    singleTap.numberOfTapsRequired = 1; 
    [myButton addGestureRecognizer:singleTap];
    
    UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget: self action:@selector(doDoubleTap)];
    doubleTap.numberOfTapsRequired = 2; 
    [myButton  addGestureRecognizer:doubleTap];
    // This is the "secret sauce":
    [singleTap requireGestureRecognizerToFail:doubleTap];
    

    【讨论】:

    • 我以前从未使用过 GestureRecognizers,但这看起来正是我想要的,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 2012-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-18
    相关资源
    最近更新 更多