2016-10-15 5 views
0

Предположим, что ParentView содержит UIView, в котором есть дочерний элемент, дочерний элемент и другие подзаголовки.Swift: как определить, произошло ли в подвью?

UIViewController прикрепляет распознаватель жестов к ParentView.

Swipes on ChildView запускает этот обработчик.

Внутри обработчика салфеток ParentView есть ли способ определить, произошло ли проворство в ChildView?

За ответ Джоша, вот попытка код, который не работает:

class TestViewController: UIViewController {  

@IBOutlet weak var targetView: UIView! 


override func viewDidLoad() { 
    super.viewDidLoad() 
    initSwipeGestures() 
} 


fileprivate func initSwipeGestures() { 
    let leftSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
    let rightSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
    let upSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
    let downSwipe = UISwipeGestureRecognizer(target: self, action: #selector(didViewSwipe)) 
    leftSwipe.direction = .left 
    rightSwipe.direction = .right 
    upSwipe.direction = .up 
    downSwipe.direction = .down 
    view.addGestureRecognizer(leftSwipe) 
    view.addGestureRecognizer(rightSwipe) 
    view.addGestureRecognizer(upSwipe) 
    view.addGestureRecognizer(downSwipe) 
} 


func didViewSwipe(_ sender:UISwipeGestureRecognizer) { 
    let location = sender.location(in: view) 
    let touchedView = view.hitTest(location, with: nil) 

    // Ignore swipes if targetView was swiped 
    if touchedView == targetView { 
     print("YO YO YO") 
    } 
} 
} 

ответ

0

Вы можете использовать UIView метод hitTest(_ point: CGPoint, with event: UIEvent?) получить подвид под место Жест в.

func swipe(_ recognizer: UISwipeGestureRecognizer) 
{ 
    let location = recognizer.location(in: self) 
    let touchedView = self.hitTest(location, with: nil) 
} 
+0

Спасибо! Должно ли 'self' быть ParentView или ChildView? – Crashalot

+0

Родительский вид; это в обработчике жестов салфетки. –

+0

Хммм, похоже, не работает? Обновлен вопрос, чтобы вы могли видеть код. – Crashalot