我有三个@Injectable({
providedIn: 'root'
})
export class ErrorHandlerService {
// ...
constructor(private notificationService: NotificationService) {}
}
实例:UIButton
,buttonA
和buttonB
。每个按钮都有自己的中心,并占据一定的大小。
我希望在屏幕上任意位置轻击屏幕时,这些按钮可以“执行某些操作”(即,更改buttonC
值),以便可以按下按钮按钮以触发其alpha
,而不会发生“执行此操作”。
请问最好的方法是什么?
答案 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,并在用户点击它时做出响应。当您点击其中一个按钮时,它不会被触发,因为在这种情况下,按钮会吃掉水龙头。