Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to know that whether a tap is inside a view or outside in swift

I'm try to develop code part, to check whether mine tap is inside a view or outside a view, i tried with pointInside method. If A is main View Controller and B is subView of A, How can i get to know that user tapped inside B.

like image 913
Joe Avatar asked Jan 16 '17 10:01

Joe


2 Answers

Apple explains it very well in Responder Chain. You can add the following function to your view controller:

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    if let firstTouch = touches.first {
        let hitView = self.view.hitTest(firstTouch.location(in: self.view), with: event)

        if hitView === viewB {
            print("touch is inside")
        } else {
            print("touch is outside")
        }
    }
}
like image 173
Code Different Avatar answered Sep 28 '22 16:09

Code Different


In the tapGestureRecognizer callback you can use the method tapGesture.location(in: A) in order to fetch the x, y position of the A referral system. Then you can use B.frame.contains(location).

If true, then the tap is in B.

Depending on what you want to do there are simpler approaches to the problem. For example, you could add the gestureRecognizer to B instead of A, if you are interested just in touches inside B.

I don't know which are exactly your needs. With more info I could give you better advices.

like image 28
Giuseppe Lanza Avatar answered Sep 28 '22 17:09

Giuseppe Lanza