在滑动手势识别器上禁用“在突出显示时显示触摸”
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 中禁用手势识别器