IPhone UIButton - проведите против касаний - PullRequest
2 голосов
/ 26 мая 2011

Я подкласс UIB кнопки для пользовательского рисунка (переопределение drawRect) и некоторых других пользовательских поведения, из которых следующее (и тривиально) следующее:

  1. Если она нажата (UIControlEventTouchDown) флаг «нажат» включен (влияет на пользовательский рисунок, вроде как «подсвечен»).
  2. Если он отпущен внутри (UIControlEventTouchUpInside), моя функция OnClick сработает.
  3. Если он выпущен снаружи (UIControlEventTouchUpOutside), флаг «нажата» отключен.

Теперь я хотел добавить дополнительное поведение к кнопке, чтобы она распознавала жесты (используя UISwipeGestureRecognizer), и воздействуйте на содержимое кнопки.Проблема заключается в том, что при выполнении жеста смахивания TouchDown срабатывает, как и должно быть, вызывая «нажатие» кнопки, что не является моим намерением во время смахивания.

У меня вопрос, есть лиэто элегантный способ избежать этого.Возможно, что-то похожее на DelaysContentTouches вида прокрутки, которое отделяет поведение смахивания от поведения нажатия.Единственная альтернатива, которую я вижу, - это возиться с таймерами, которые я предпочитаю избегать, если это возможно.

Спасибо!

1 Ответ

0 голосов
/ 28 декабря 2011

DannyA.Вот мое решение:

Используйте также UITapGestureRecognizer

UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapAction:)];

Затем, внедрите это в didTapAction: селектор

[UIButton setHighlighted:YES];

[UIButton performSelector:@selector(setHighlighted:) withObject:NO afterDelay:0.15];

Это прекрасно работает для меня.

...