![](/img/trans.png)
[英]Swift 3: iMessage Extension detect User tap on Message and Detect Manual Slide
[英]Detect that user tap on screen Swift
我想在用戶點擊除該視圖之外的其他內容后從屏幕中刪除UIVIew
。 (為了給你形象化,我將上傳我的視圖草圖)[
] 1
並且我想在用戶點擊此視圖中除按鈕之外的其他UIview
后刪除藍色UIview
。 我應該使用什么?
編輯:在藍色UIVIew
有兩個按鈕,我想在用戶點擊背景圖像時刪除該視圖
我做了“yerpy”告訴我要做的事情,但它不起作用。
func test(gestureRecognizer: UITapGestureRecognizer) {
print("test")
}
func setUpBackgroundImageView() {
self.view.addSubview(backgroundImageView)
backgroundImageView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
backgroundImageView.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
backgroundImageView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
backgroundImageView.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
let tap = UITapGestureRecognizer(target: self, action: #selector(test(gestureRecognizer:)))
backgroundImageView.addGestureRecognizer(tap)
tap.delegate = self
}
我還將shouldReceiveTouch
函數添加到UIGestureRecognizerDelegate
。 我做錯了什么?
將UIGestureRecognizer
添加到super view
:
正如你所說,你有圖像視圖作為背景。
let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(tapped(gestureRecognizer:)))
imageView.addGestureRecognizer(tapRecognizer)
tapRecognizer.delegate = self
添加目標操作:
func tapped(gestureRecognizer: UITapGestureRecognizer) {
// Remove the blue view.
}
然后在UITapGestureRecognizerDelegate
里面:
extension ViewController : UIGestureRecognizerDelegate {
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
if touch.view!.superview!.superclass! .isSubclass(of: UIButton.self) {
return false
}
return true
}
}
希望它有幫助!
編輯
通過啟用確保用戶可以觸摸view
: self.view.userInteractionEnabled = true
您可以為該視圖使用 UITapGestureRecognizer
override func viewDidLoad() {
super.viewDidLoad()
// Add "tap" press gesture recognizer
let tap = UITapGestureRecognizer(target: self, action: #selector(tapHandler))
tap.numberOfTapsRequired = 1
backgroundimage.addGestureRecognizer(tap)
}
// called by gesture recognizer
func tapHandler(gesture: UITapGestureRecognizer) {
// handle touch down and touch up events separately
if gesture.state == .began {
} else if gesture.state == .ended {
}
}
你可以
-beganTouches:(there is another para but I forget what it is)
在所有按鈕下添加一個覆蓋整個屏幕的巨大按鈕。 每當用戶按下較小按鈕下方的巨大按鈕時,就可以執行您希望它執行的操作。
不是最優雅的,但它有效:P
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.