Подтвердить что ты не робот

Проблема UITapGestureRecognizer в iOS 9

Я, ребята,

Сегодня я обновил свой iPhone до iOS 9 и теперь имею проблемы с распознающим жестом. Это ошибка:

ПРЕДУПРЕЖДЕНИЕ: распознаватель жестов (; target = < (action = onVideoTap:, target =) → ) была настроена в раскадровке /xib для добавления к нескольким представлениям (- > ; layer = > ) за раз, это никогда не разрешалось и теперь применяется. Начиная с iOS 9.0, он будет помещен в первое представление, которое загружается в.

У меня не было этой проблемы с iOS8. Представление содержит UIImageView и TextView. Распознаватель был сброшен в ImageView и имеет только ссылки на это представление.

Я действительно не понимаю эту проблему. Может кто-нибудь мне помочь? Спасибо:)

4b9b3361

Ответ 1

Уже исправлено это. Раскадровка локализована, и на одном языке я дважды назначил распознаватель на изображение. Как-то это, казалось, вызывало проблемы и на других раскадках.

Ответ 2

Это происходило со мной, потому что я хотел использовать Tap Gesture Recognize с изображением в TableViewCell, содержащемся в TableView.

Проблема заключается в том, что:

Я добавляю один признак распознавания жестов, но в моей таблице больше одного TableViewCell (более одного изображения).

iOS назначит UITapGestureRecognizer первому изображению в первой ячейке, а другие ячейки будут без жестов (жест уже установлен только для первого изображения).

Чтобы решить эту проблему, выполните следующие действия:

  • Убедитесь, что вы отметили User Interaction Enabled для UIView, который вы хотите назначить с помощью TapRecognizerGesture.
  • в подзадаче TableViewCell в моем случае добавьте новый UITapGestureRecognizer. Код:

    internal let tapRecognizer1: UITapGestureRecognizer = UITapGestureRecognizer()`
    
  • В вашем главном представлении TableView в моем случае и для каждой ячейки назначьте UITapGestureRecognizer, который вы сделали с каждой ячейкой основной функции в главном представлении:

    cell.tapRecognizer1.addTarget(self, action: "img_Click:")
    cell.img.gestureRecognizers = []
    cell.img.gestureRecognizers!.append(cell.tapRecognizer1)
    
  • Добавьте желаемую функцию UITapGestureRecognizer при нажатии:

    func img_Click(sender: UITapGestureRecognizer) {
        print("ok")
    }
    

Примечания:

  • Вы можете использовать простой способ, если вы не хотите, чтобы действие UITapGestureRecognizer в основном представлении было назначено непосредственно в его подзадаче.
  • в шаге 4 имя функции должно быть таким же, как в строке addTarget.

Ответ 3

Я думаю, что эта проблема возникает, когда вы используете раскадровку, добавили Recognizer Tap Gesture Recognizer. По некоторым причинам вы добавили несколько просмотров (см. Рисунок).

введите описание изображения здесь

Итак, удалите другие неправильные представления, оставьте правый вид.

введите описание изображения здесь