Кнопка UIB не показывает подсветку, когда действие селектора состоит в том, чтобы нажать новый UIViewController - PullRequest
3 голосов
/ 31 января 2011

У меня есть приложение для iPhone / iOS, в котором есть кнопки UIB (обычные, с текстовыми метками; пользовательская графика не используется), которые при нажатии помещают новый UIViewController в стек UINavigationController.

Кнопки косвенно отображаются в UIScrollView; все они находятся непосредственно в другом UIView, который создается во время выполнения, а затем этот UIView добавляется в UIScrollView.

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

Если я установлю обнаружение нажатия на использование TouchUpInside, а не TouchDown, то если пользователь удерживает кнопку нажатой в течение короткого времени (возможно, полсекунды), кнопка отображается как выделенная, но при использовании TouchDown она выделяется редко и в любом случае я бы предпочел, чтобы выделение отображалось, даже если пользователь просто слегка нажимает кнопку.

Я исследовал этот сайт и другие, чтобы найти ответы, и попробовал различные подходы, которые я нашел, предлагаемые для борьбы с подобными проблемами. Наиболее вероятным ответом, казалось, было присвоение свойству delaysContentTouches значения NO для UIScrollView, но это не сделал заметной разницы в моем заявлении. Действительно, ничего, что я нашел удовлетворительно, не ответило на вопрос.

Есть идеи? ...

1 Ответ

13 голосов
/ 31 января 2011

Да, задержка вызвана тем, что UIScrollView пытается обнаружить жест прокрутки, и да, вы можете решить ее, установив для delaysContentTouches значение НЕТ.Более того, вы всегда должны использовать UIControlEventTouchUpInside вместо UIControlEventTouchDown с UIButton, потому что это позволяет пользователю «передумать», отводя палец дальше от кнопки.

...