Как переслать все события в элемент управления, кроме события длинного нажатия
Я хочу сделать секретный горячий угол, если пользователь нажимает и удерживает верхний правый угол (размер 100px * 100px), а затем показывает экран с паролем. Для других событий, например, в горячем углу касания, представление должно передать свое событие касания элементам управления ниже.
При щелчке по красноватой области (горячий угол) его событие касания должно перейти в текстовое поле (введите URL веб-сайта), под которым оно находится. И если это долгое нажатие, то должен показываться только сигнал тревоги.
Я попытался использовать точку внутри, но это бесполезно, потому что вы не можете добавить жест, как только вы переопределяете точку внутри метода.
class HotCornerView: UIView,UIGestureRecognizerDelegate {
override init(frame: CGRect) {
super.init(frame: frame)
//addLongTapGestureToActivateHotCorner()
// self.isUserInteractionEnabled = false
}
convenience init() {
self.init(frame: CGRect.zero)
}
required init(coder aDecoder: NSCoder) {
fatalError("This class does not support NSCoding")
}
func addLongTapGestureToActivateHotCorner() {
let longPressRecognizer = UILongPressGestureRecognizer(target: self, action: #selector(longPressed(_:)))
self.addGestureRecognizer(longPressRecognizer)
}
@objc func longPressed(_ sender: UILongPressGestureRecognizer){
self.delegate?.hotCornerViewActivated()
}
override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
//self.delegate?.hotCornerViewActivated()
//print("point=\(point)")
for subview in subviews as [UIView] {
if !subview.isHidden && subview.alpha > 0 && subview.isUserInteractionEnabled && subview.point(inside: convert(point, to: subview), with: event) {
return true
}
}
return false
}
}