在滑动手势识别器上禁用“在突出显示时显示触摸”

Posted

技术标签:

【中文标题】在滑动手势识别器上禁用“在突出显示时显示触摸”【英文标题】:Disable "Shows Touch On Highlight" on Swipe Gesture Recognizer 【发布时间】:2013-02-25 06:36:54 【问题描述】:

我有一个酒吧,上面有 8 个不同的UIButton。每个UIButton 都选中了“Shows Touch On Highlight”属性。并非所有 8 个按钮都同时显示。

我将它们分成两组 UIButton,并使用 UISwipeGestureRecognizer 在两个视图之间切换。

这很好用。

所以,这是我的问题:

当我滑动并触摸其中一个按钮时,我仍然会看到触摸突出显示动画,即使按钮功能没有触发(因为我滑动了)。

在这种情况下(滑动)我不想看到触摸突出显示。如何禁用它?

【问题讨论】:

将按钮设置为 self.btn.showsTouchWhenHighlighted = NO; btn.showsTouchWhenHighlighted = NO;使用此属性。 我不想禁用突出显示 - 我只想在识别到滑动手势时禁用它 【参考方案1】:

使用 UIButton 的属性showsTouchWhenHighlighted

例如:self.btn.showsTouchWhenHighlighted = NO

【讨论】:

我不认为他想永久禁用突出显示,只是当触摸是滑动手势的一部分时。 Scott - 没错 - 我只想在滑动生效时禁用突出显示【参考方案2】:

为了解决这个问题,我将 UIButton 替换为 UILabel 并附加了一个点击处理程序。 由于 UILabel 没有触摸高亮,因此不会干扰滑动。

这是一个代码示例:

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

与其说是解决方案,不如说是一种变通方法,但它可能很有用。

【讨论】:

【参考方案3】:

我建议你使用 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];

希望对你有帮助 谢谢!

韦恩

【讨论】:

我不明白 - 这有什么帮助?

以上是关于在滑动手势识别器上禁用“在突出显示时显示触摸”的主要内容,如果未能解决你的问题,请参考以下文章

禁用和启用页面视图控制器手势识别器?

屏幕边缘手势识别器问题

我可以禁用UIPageViewController的页面边框手势识别器吗?刷卡一个?

在 AVPlayerViewController 中禁用手势识别器

我可以禁用 UIPageViewController 的页面边框手势识别器吗?并保持刷卡?

禁用手势识别器