2013-11-21 3 views
10

У меня проблема в двух совершенно разных ситуациях, что делает ее действительно странной.Задержка состояния подсветки кнопки

  1. Ситуация: UIButton in as subView другого UIView.
  2. Ситуация: UIBarButtonItem's в UIToolBar.

В обеих ситуациях кнопки только подсвечиваются после небольшой задержки, приблизительно 0,5 секунды. Определенно, чтобы долго выделять вид, постукивая по нему нормально. Они оба отлично работают на симуляторе, но не на реальном устройстве (у меня iPhone 5 с iOS 7.0.4).

То, что я пытался
Установка zPosition к наибольшему значению (MAXFLOAT) из этих точек зрения, чтобы убедиться, что ничего не блокирует кран.
Явное включение подсветки.

Оба явно не работают.

Редактировать: Все еще не решена.

+0

Не делаете ли вы что-то вроде серверных вызовов в основной теме при нажатии этих кнопок? Это может вызвать задержку выделения. Вы должны сделать эти звонки в фоновом режиме, если да. – FabKremer

+0

выделяет изображение в формате png? –

+0

Я думаю, вы делаете тяжелую работу, постукивая по этим кнопкам. На главном потоке работает рендеринг изображений. Вы можете проверить функцию IBAction для кнопок. – Joey

ответ

0

Являются ли UIButtons внутри UIScrollView? Если они есть, существует задержка, поэтому scrollview может определить, имеет ли прикосновение для прокрутки или оно должно быть передано в подвью.

Смотрите также UIButton touch is delayed when in UIScrollView

+0

Нет. Также: я убедился, что не было и было полностью известно об этом. – Leandros

0

Я знаю, что это было давно, но я столкнулся с аналогичной проблемой:

  • Моего UIButton является подвидом из UINavigationController.view
  • Там нет задержки на тренажере
  • Но есть задержка, чтобы показать подсветку на устройстве.

Я только узнал, что это произойдет, только если я запустил приложение из Xcode. Если я отключу устройство и откройте приложение из его значка, все будет работать нормально.

Надеюсь, это поможет.

2

Это может произойти, если кнопки расположены близко к нижнему краю дисплея. Существует конфликт с жесткой жестью системы, чтобы представить Control Center (или App Switcher на iPhone X и iPad). Это задерживает касание кнопок, пока не будет определено, что пользователь не выполняет системный жест.

Если вы хотите, вы можете сказать системе, чтобы обеспечить приоритет вашим жесты над жесты системы.

override func preferredScreenEdgesDeferringSystemGestures() -> UIRectEdge { 
    return .bottom 
} 

Обратите внимание, что это потребует, чтобы пользователь дважды промахнулся, чтобы активировать системный жест.

Смежные вопросы