Обнаружение касаний в интервале UIStackView (между элементами) - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь определить, когда пользователь нажимает между элементами в UIStackView.Создание подклассов UIStackView и переопределение hitTest и pointInside не работает.Их вызывают только тогда, когда я нажимаю на предмет.

Есть ли способ достичь этого?

Спасибо!

Ответы [ 4 ]

0 голосов
/ 21 февраля 2019

Проблема в том, что iOS почему-то не отслеживает прозрачные представления.В итоге я добавил прозрачное представление почти , которое восстанавливает отслеживание между элементами:

let invisibleTrackingView = InvisibleTrackingView(frame: mainStackView.frame)
invisibleTrackingView.backgroundColor = UIColor.clear.withAlphaComponent(0.001)
mainStackView.addSubview(invisibleTrackingView)

class InvisibleTrackingView: UIView {
    override func point(inside point: CGPoint, with event: UIEvent?) -> Bool {
        return false
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        return nil
    }
}

Значение 0,001 - это самое низкое значение, которое будет работать, и настолько низкое, что представление практически прозрачно,Поскольку представление возвращает false и nil, ОС идет вниз по цепочке представления, пока одно из них не станет совпадением.

0 голосов
/ 21 февраля 2019

Вам необходимо добавить распознаватель жестов касания для просмотра в стеке.

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(stackViewTapped))
tapGesture.numberOfTapsRequired = 1
self.stackView.addGestureRecognizer(tapGesture)

@objc func stackViewTapped() {
     print("Stack View tapped")
}
0 голосов
/ 21 февраля 2019

Вы можете добавить прозрачные представления вместо пробела между UIStackView.

Шаг 1: Добавить представление и сделать интервал в виде стека ноль Add view and make spacing zero

Шаг 2: Сделать вид прозрачным enter image description here

Шаг 3: Добавить жест касания к этому виду enter image description here

Шаг 4: Добавить действиек жесту и обработайте его соответственно enter image description here

Вы можете найти образец здесь

0 голосов
/ 21 февраля 2019

Я бы предложил вам добавить нетекстовую кнопку к UIStackView и использовать ее в качестве разделителя.Поэтому вы можете добавить IBAction для кнопки.

Вы можете достичь того же, если добавите UIView, а затем UIGestureRecognizer к UIView.

Как добавить UIGestureRecognizer отметку по этой ссылке

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...