Я создал собственное нулевое изображение, базовую графику, нарисованную UIButton, на основе Обучающего руководства Рэя Вендерлиха (единственные модификации - метод CoolButton drawRect:
, измененный код рисования), и он прекрасно работает в большинстве случаев.времени.Однако иногда, когда я нажимаю на него в течение короткого периода времени, он остается в подавленном состоянии и не возвращается в нормальное состояние.
Отсюда единственный способ вернуть его в нормальное состояние - это долгое нажатие.Простое нажатие означает, что оно остается подавленным.
Еще одна вещь, которую стоит отметить, это то, что я подключил Touch Up Inside к цепочке из нескольких длинных методов - я не думаю, что это займет более 0,1 секунды.,Я даже использовал dispatch_async
в @selector
, который подключен к Touch Up Inside, так что, думаю, не должно быть задержки при обновлении интерфейса.
Я поместил NSLog
в drawRect:
, который обычно срабатывает 3 раза за нажатие кнопки, и это зависит от того, какая UIControlState
кнопка используется для каждого нажатия:
- Для некоторых коротких нажатий он выделен, выделен, обычный
- для более длинных нажатий, выделен, обычный, обычный
Однако для очень коротких нажатий онстреляет только дважды, Выделено -> Выделено.
Когда долгое нажатие возвращает его к нормальному состоянию, оно идет H, N, N.
Меня это озадачиваетНекоторое время, и я не смог понять, почему короткие нажатия только дважды запускают drawRect:
, или почему touchesEnded:
, кажется, не вызывает drawRect:
.Возможно touchesEnded:
не стреляет?
Я действительно надеюсь, что кто-то может помочь.