【问题标题】:How implement longPressGestureRecognizer for subview with disabled user interaction?如何为禁用用户交互的子视图实现 longPressGestureRecognizer?
【发布时间】:2014-10-01 08:51:15
【问题描述】:

我需要这样的用户界面:

带有 2 个按钮(黄色和红色)和背景视图(灰色),它们将具有下一个行为: - 当我按下它时突出显示按钮; - 当我释放按钮时执行; - 当我从任何其他视图按下并移入按钮时,按钮会突出显示(例如:按下灰色矩形并释放红色,或按下黄色并释放红色); - 支持按钮手势(如长按和滑动)

所以为了解决我的问题,我发现只有下一个方法: 我重新定义了我的GrayView 触摸方法:touchesCancelledtouchesMovedtouchesBegan,并且我检查当前触摸位置是否属于某个矩形 - 我执行适当的操作。但是对于这个解决方案,我必须使用userInteractionEnabled = false 制作我的按钮,这意味着它们不再支持手势或其他事件。所以如果我用什么支持它,我必须自己实现它,我不做什么。

那我该如何解决呢?

【问题讨论】:

  • 你做了什么来检测按钮被按下(在你的第一个解决方案之前)?这是一种姿态吗? UIView 方法覆盖?按钮动作触地?关于您的实施的信息如此之少,无法为您提供帮助

标签: ios objective-c user-interface swift uikit


【解决方案1】:

如果我理解正确,您也可以将手势识别器添加到灰色视图中。当手势识别器触发时,找出触摸区域中的彩色视图:

- (void)tapAction:(UITapGestureRecognizer*)recognizer{
    if(recognizer.state == UIGestureRecognizerStateEnded){
        CGPoint position = [recognizer locationInView:grayView];
        if(CGRectContainsPoint(redView.frame, position) {
            ...
        }
    }
}

【讨论】:

  • 你是对的,但它只对长按或点击有帮助,但对于滑动手势它不是很有帮助,还是我错了?
  • 用户刷卡时你想做什么?
  • 您仍然应该能够找到滑动的视图。我不确定您是否甚至需要执行 locationInView,如果您在控制台中显示 Recognizer.view 会记录什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-13
  • 1970-01-01
  • 2023-03-07
  • 2015-06-06
  • 2012-07-29
  • 2011-12-14
  • 1970-01-01
相关资源
最近更新 更多