如何通过禁用用户交互为子视图实现longPressGestureRecognizer?

时间:2014-10-01 08:51:15

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

我需要这样的UI:

enter image description here

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

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

那我怎么解决这个问题呢?

1 个答案:

答案 0 :(得分:1)

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

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