Отключить показ сенсорного выделения в распознавателе жестов смахивания

У меня есть полоса с 8 разными UIButton. У каждого UIButton отмечен атрибут «Показывать касание при выделении». Не все 8 кнопок отображаются одновременно.

Я разделяю их на две группы по 4 UIButton и использую UISwipeGestureRecognizer для переключения между двумя представлениями.

Это прекрасно работает.

Итак, вот моя проблема:

Когда я смахиваю и касаюсь одной из кнопок, я все еще вижу анимацию выделения касания, хотя функция кнопки не срабатывает (поскольку я смахиваю).

В этом случае (пролистывания) я не хочу видеть подсветку касания. Как я могу отключить его?


person YogevSitton    schedule 25.02.2013    source источник
comment
установите кнопку как self.btn.showsTouchWhenHighlighted = NO;   -  person Fire Fist    schedule 25.02.2013
comment
btn.showsTouchWhenHighlighted = НЕТ; Используйте это свойство.   -  person user247    schedule 25.02.2013
comment
Я не хочу отключать подсветку — я хочу отключить ее ТОЛЬКО при распознавании жеста смахивания   -  person YogevSitton    schedule 25.02.2013


Ответы (3)


Используйте свойство UIButton showsTouchWhenHighlighted.

Пример: self.btn.showsTouchWhenHighlighted = NO

person Fire Fist    schedule 25.02.2013
comment
Я не думаю, что он хочет навсегда отключить подсветку, просто когда прикосновение было частью жеста смахивания. - person Scott Berrevoets; 25.02.2013
comment
Скотт — правильно — я хочу отключить подсветку только тогда, когда свайп вступит в силу - person YogevSitton; 25.02.2013

Чтобы решить эту проблему, я заменил UIButton на UILabel и прикрепил обработчик нажатия. Поскольку UILabel не имеет сенсорного выделения, он не мешает пролистыванию.

Вот пример кода:

UITapGestureRecognizer *tapLabel = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tap:)];
[tapLabel setNumberOfTouchesRequired:1];
[tapLabel setNumberOfTapsRequired:1];
[titleLabel addGestureRecognizer:tapLabel];
titleLabel.userInteractionEnabled = TRUE;

Это скорее обходной путь, чем решение, но может быть полезным.

person Ciprian Rarau    schedule 14.10.2014

Я предлагаю вам использовать UIImageView заменить кнопку

вот пример:

UISwipeGestureRecognizer *swiper = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwip:)] autorelease];
[swiperTopL setDirection:UISwipeGestureRecognizerDirectionLeft];
[imageView addGestureRecognizer:swiper];


UITapGestureRecognizer *tapButton = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(buttonTap:)] autorelease];
[imageView addGestureRecognizer:tapButton];

Надеюсь, это поможет вам, спасибо!

Уэйн

person Wayne Lai    schedule 25.02.2013
comment
Я не понимаю - как это поможет? - person YogevSitton; 27.02.2013