UIControlEventTouchUpInside latency

У меня есть кнопка и с событием управления, как:

[_flashBackButton addTarget:self
                     action:@selector(flashBackButtonCallback:)
           forControlEvents:UIControlEventTouchUpInside];

если я использую UIControlEventTouchUpInside Перед вызовом моего селектора очень маленькая задержка (1 секунда) (задержка, после которой я перестал касаться экрана).

Я пробовал с

[_flashBackButton addTarget:self
                     action:@selector(flashBackButtonCallback:)
           forControlEvents:UIControlEventTouchDown];

мой селектор вызывается сразу.

=> проблема в том, что эта кнопка используется для отображения другого контроллера представления, и эта длительная задержка заставляет наше приложение чувствовать себя не отвечающим. Когда я сравниваю с другими известными приложениями, такими как Facebook, Twitter и т. Д., Их контроллеры представления появляются почти сразу после нажатия кнопки.

Есть ли кто-нибудь, кто знает способ это исправить? Я не хочу использовать UIControlEventTouchDown,

Заранее спасибо за помощь

чтобы посмотреть видео: https://www.dropbox.com/s/kl1sr5jnpzo1i7s/IMG_2865.MOV

2 ответа

Решение

Хорошо, я должен выяснить, в чем проблема:
моя кнопка - это элемент uiBarButtonItem, и у меня на панели навигации есть средство распознавания жестов (двойное нажатие).
Это был этот жест, который вызвал задержку. Я решил мою проблему с:
События щелчка в UINavigationBar, переопределенные распознавателем жестов

Похоже, у вас есть что-то в следующем методе viewWillAppear viewController, блокирующем основной поток пользовательского интерфейса. Поместите NSLog в исходное действие viewController; посмотрите, запускается ли он немедленно, затем поместите другое в целевой метод viewWillAppear. Это должно сузить проблему.

Другие вопросы по тегам