2013-04-23 5 views
1

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

[_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

+0

Как долго задерживается и в чем проблема? – Wain

+0

Задержка составляет около 1 секунды. => Проблема в том, что эта кнопка используется для отображения другого контроллера представления, и эта длительная задержка делает наше приложение неприемлемым. Когда я сравниваю с другими известными приложениями, такими как facebook, twitter и т. Д., Их контроллеры представлений появляются почти сразу после нажатия кнопки. – amau96

+0

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

ответ

1

Хорошо, я выяснил, в чем проблема:
Моя кнопка - uiBarButtonItem, и у меня есть распознаватель жестов (двойной кран) на моей панели uinavigation.
Это был этот жест, вызывающий латентность. Я исправляю свои проблемы с:
Click events in UINavigationBar overridden by the gesture recognizer

+0

. Именно это я и предлагаю в своем комментарии. :) –

1

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

+0

https: //www.dropbox.com/s/kl1sr5jnpzo1i7s/IMG_2865.MOV – amau96

+0

Как я уже сказал, если я использую: [_ flashBackButton addTarget: self action: @selector (flashBackButtonCallback :) forControlEvents: UIControlEventTouchDown]; другой диспетчер представлений сразу отображается – amau96

+0

Используете ли вы прокрутку, как просили другие? –

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