Find which child view was tapped when using UITapGestureRecognizer

前端 未结 2 501
慢半拍i
慢半拍i 2020-12-02 15:07

How do I know on which of the the child views an event occurred when using UIGestureRecognizers?

According to the documentation:

A gesture rec

2条回答
  •  一整个雨季
    2020-12-02 15:52

    This will find the innermost descendant view at the event's location. (Note that if that child view has any interactive internal private grandchildren this code will find those too.)

    UIView* view = gestureRecognizer.view;
    CGPoint loc = [gestureRecognizer locationInView:view];
    UIView* subview = [view hitTest:loc withEvent:nil];
    

    In Swift 2:

    let view = gestureRecognizer.view
    let loc = gestureRecognizer.locationInView(view)
    let subview = view?.hitTest(loc, withEvent: nil) // note: it is a `UIView?`
    

    In Swift 3:

    let view = gestureRecognizer.view
    let loc = gestureRecognizer.location(in: view)
    let subview = view?.hitTest(loc, with: nil) // note: it is a `UIView?`
    

提交回复
热议问题