M o o v i x

Размещено: 12 июля 2021 в Блог

Переопределяем hitTest у кастомной кнопки на UITabBar

Всем привет! Часто необходимо добавить кастомную кнопку в таббар, но тут появляется проблема: если какая-то часть frame кнопки выходит за границы frame своего superview, то в этой части кнопки перестает работать touch-event, а вместо этого срабатывает на superview. Пример: если кнопка расположена поверх таблицы, то при нажатии на кнопку будет выделяться ячейка таблицы под этой кнопкой.

Для решения этой проблемы надо переопределять hitTest

 

override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? { if clipsToBounds || isHidden || alpha == 0 { return nil } for subView in subviews.reversed() { let subPoint = subView.convert(point, from: self) if let result = subView.hitTest(subPoint, with: event) { return result } } return nil }