在滑动手势识别器上禁用“显示高亮显示触摸”

时间:2013-02-25 06:36:54

标签: objective-c xcode uibutton uigesturerecognizer uiswipegesturerecognizer

我有一个8个不同UIButton的栏。每个UIButton都选中了“在突出显示时触摸”属性。并非所有8个按钮同时显示。

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

这很有效。

所以,这是我的问题:

当我滑动并触摸其中一个按钮时,我仍然看到触摸高亮显示动画,即使按钮功能未触发(因为我滑动)。

在这种情况下(轻扫)我不想看到触控高光。我该如何禁用它?

3 个答案:

答案 0 :(得分:1)

使用UIButton showsTouchWhenHighlighted的属性。

示例:self.btn.showsTouchWhenHighlighted = NO

答案 1 :(得分:1)

为了解决这个问题,我用UILabel替换了UIButton并附加了一个tap处理程序。 由于UILabel没有突出显示的触摸,因此它不会干扰滑动。

以下是代码示例:

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

这是一种解决方法,而不是一种解决方案,但它可能很有用。

答案 2 :(得分:0)

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

希望它可以帮到你, 谢谢!

韦恩