Git Hub
коротко

hitTest

8 мая 2017, 0:40

Задача

У вас есть UIView c N количеством кнопок внутри
и вот прикол, высота этой вьюхи 1 пиксель,
а теперь вопрос как вы обработаете Tap'ы по каждой из кнопок ?

решение 1

//MARK: hitTest
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        if buttonOne.frame.contains(point){
                return buttonOne
        } else if buttonOne.frame.contains(point){
        return buttonTwo
} else if buttonOne.frame.contains(point){
   return buttonThree
} 
else {
 return nil
}


    }

решение 2 (более приятное)

//MARK: hitTest
    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
       return  getButton(point, buttons: [buttonOne, buttonTwo, buttonThree])
    }

    func getButton(_ point:CGPoint, buttons: [UIView] ) -> UIView? {
        for button in buttons {
            if (button.frame.contains(point)){
                return button
            }
        }
        return nil
    }
Поделиться
Популярное