检测不在UISubView上的轻击手势

时间:2018-08-01 17:46:49

标签: ios swift uiview uigesturerecognizer

我有三个@Injectable({ providedIn: 'root' }) export class ErrorHandlerService { // ... constructor(private notificationService: NotificationService) {} } 实例:UIButtonbuttonAbuttonB。每个按钮都有自己的中心,并占据一定的大小。

我希望在屏幕上任意位置轻击屏幕时,这些按钮可以“执行某些操作”(即,更改buttonC值),以便可以按下按钮按钮以触发其alpha,而不会发生“执行此操作”。

请问最好的方法是什么?

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    // Get location of touch
    let pos = touches.first?.location(in: self.view)

    if !b.frame.contains(pos) && !b2.frame.contains(pos) && !b3.frame.contains(pos) {
        // Change alpha or do something else
    }
}

其中b,b2和b3是每个按钮。

答案 1 :(得分:1)

与其他任何水龙头一样工作。只需给“其他地方”(例如,视图控制器的主视图)提供一个UITapGestureRecognizer,并在用户点击它时做出响应。当您点击其中一个按钮时,它不会被触发,因为在这种情况下,按钮会吃掉水龙头。