#swift #uitapgesturerecognizer
#swift #uitapgesturerecognizer
Вопрос:
У меня есть простой код для добавления TapGestureRecognizer в dismis ViewController при нажатии на экран, но он не работает только в iPhone X 12.1.
addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(closeSharing(_:))))
Примечание: волшебным образом, когда я добавляю tap gesturecognizer в новое представление, это ограничение, равное view, также не работает, но если я ограничиваю новое представление, не равное view, это работает. Кто-нибудь знает, почему?.
Комментарии:
1. Куда вы добавляете жест касания?
2. В viewDidLoad я пытаюсь добавить его в interface Builder, но он также не работает
3. спасибо, теперь это работает, я не знаю почему, но, возможно, мой xcode или мой симулятор выдает ошибку.
Ответ №1:
Возможно, здесь потребуется проверить пару вещей:
Первый шаг убедитесь, что ваш основной вид не закрыт, например, другим видом сверху, который нарушит ваш жест касания, поэтому добавьте жест к вашему виду сверху.
Второй шаг Убедитесь, что ваше представление, в котором будет использоваться жест, должно обладать этим свойством view.isUserInteractionEnabled = true
, иначе жест не будет работать.
Третий шаг Убедитесь, что ваше представление отображается во время тестирования, у вас может возникнуть проблема с ограничениями, поэтому представление выходит за пределы экрана, поэтому попробуйте присвоить представлению значение backgroundColor = .red
, чтобы узнать, существует оно или нет, или вы можете использовать View Debugger из xCode.
Пример рабочего жеста:
let viewToDismiss = UIView(frame:UIScreen.main.bounds)
viewToDismiss.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer(target: self, action: #selector(closeSharing(_:)))
tap.numberOfTapsRequired = 1
viewToDismiss.addGestureRecognizer(tap)
Комментарии:
1. Спасибо за ваш ответ, но я проверил все это, и он по-прежнему не работает только в симуляторе iPhoneX 12.1.
2. спасибо, теперь это работает, я не знаю почему, но, возможно, мой xcode или мой симулятор выдает ошибку.