UINavigationControllerPaletteClippingView, охватывающий UIImageView и получающий жест касания - PullRequest
0 голосов
/ 25 апреля 2018

Я применяю касание к представлению изображения, чтобы увеличить его, а затем нажмите, чтобы закрыть увеличенное изображение. Отпускать кран не работает, хотя. Когда я смотрю на иерархию представлений, я вижу, что есть UINavigationControllerPaletteClippingView поверх представления изображений, которое, я думаю, получает сигналы. Они упоминают аналогичную проблему здесь в iOS 11. Я не могу найти почти никакой документации по этому поводу, и я немного потерян. Вот мой код:

@objc func enlargeImage(sender: UITapGestureRecognizer) {

    let image = (sender.view as! UIImageView).image
    let enlargedImageView = UIImageView(image: image)
    enlargedImageView.frame = view.frame
    enlargedImageView.backgroundColor = .black
    enlargedImageView.contentMode = .scaleAspectFit
    enlargedImageView.isUserInteractionEnabled = true
    let tapToDismiss = UIGestureRecognizer(target: self, action: #selector(dismissEnlargedImage))
    enlargedImageView.addGestureRecognizer(tapToDismiss)
    self.view.addSubview(enlargedImageView)
    self.navigationController?.isNavigationBarHidden = true
}

@objc func dismissEnlargedImage(sender: UITapGestureRecognizer) {
    self.navigationController?.isNavigationBarHidden = false
    sender.view?.removeFromSuperview()
}

Любая помощь приветствуется!

Обновление:

enter image description here

Вот скриншот отладчика представления.

Я поместил точку останова в dismissEnlargedImage, и она никогда не была достигнута, поэтому я не думаю, что есть такая проблема. И я объявляю оба средства распознавания жестов в отдельных функциях, поэтому не вижу способа, которым проблема может быть связана с областью действия.

1 Ответ

0 голосов
/ 25 апреля 2018

_UINavigationControllerPaletteClippingView был представлен в iOS 11 и, вкратце, обрабатывает появление панели поиска в панели навигации, добавленной к элементу навигации через его свойство searchController.Он работает в сочетании с большими заголовками и сворачивающимися панелями, появившимися в iOS 11.

Вы найдете скудную документацию об этом классе, потому что он является закрытым для UIKit (т.е. вы не должны использовать его напрямую, если хотите сохранить AppStore).соответствие).

При этом может быть трудно проанализировать вашу проблему без дополнительного контекста.Не могли бы вы предоставить скриншот отладчика макета, на котором вы видите _UINavigationControllerPaletteClippingView, закрывающий изображение, которое вы добавляете?

Добавлен ли вид изображения на экране с возможностью поиска.Т.е. включает ли сцена навигации строку поиска, когда вы показываете изображение?

Я с удовольствием обновлю этот ответ, если дополнительный контекст даст мне (нам) подсказку о том, где искать проблему.


Обновление

enlargeImage, кажется, вызывается UITapGestureRecognizer.Можете ли вы подтвердить, что нет никакого дела с обезьянами относительно того, как оба метода вызываются и в каком порядке и т. Д .?

Что я имею в виду под этим:

  • Может enlargeImage вызывается одновременно с dismissEnlargedImage, и для каждого касания вы одновременно показываете и скрываете изображение, создавая впечатление, что нажатие кнопки отклонения не работает?
  • Может быть, средство распознавания жестов вызывает enlargeImageотносится к распознавателю жестов, вызывающему dismissEnlargedImage таким образом, что наличие одного предотвращает срабатывание другого?
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...