0

UIPanGestureRecognizer在我的UIButton. 现在,当我按下按钮后用手指拖动一小段距离时,按钮停止突出显示。通常,除非您将 UIButtons 框架拖出很远,否则 UIButton 将保持突出显示。但是,使用平移手势识别器,现在即使我稍微拖动,按钮也会停止突出显示。

我的代码中没有任何内容将按钮高亮属性设置为否。我什至尝试擦除平移手势识别器动作选择器中的所有代码(每当我平移按钮时都会调用该方法)。

我还尝试在平移手势识别器的动作选择器中将按钮的突出显示属性设置为 NO。

这种工作只是突出显示闪烁。当您平移时,突出显示的部分消失了,然后很快又回来了,就像闪光灯一样。所以,这也行不通。有任何想法吗?

4

3 回答 3

4

默认情况下,手势将取消它们链接到的视图中的触摸。因此,当您的按钮中的触摸被取消时,它变得不突出。要防止这种行为,请将cancelsTouchesInView手势的属性设置为NO

于 2012-08-13T01:34:58.850 回答
1

这将起作用

-(void) panDetected:(UIGestureRecognizer *) gesture 
{
    if(gesture.state == UIGestureRecognizerStateBegan)
    {
        yourButton.backgroundImageView.image = [UIImage imageNamed:@"your_button_highlited_image.png"];
    }
    else if(gesture.state == UIGestureRecognizerStateChanged)
    {

    }
    else if(gesture.state == UIGestureRecognizerStateEnded)
    {
        yourButton.backgroundImageView.image = [UIImage imageNamed:@"your_button_normal_image.png"];
    }
}
于 2012-08-13T01:25:06.817 回答
0

我也遇到过同样的问题。borrrden 是对的;要修复它,请将 viewController 设置为 gestureRecognizer 的委托,如果触摸在 IUButton 上,则取消触摸。首先在 .h 文件中添加协议 `UIGestureRecognizerDelegate。然后,在创建手势识别器之后,将视图控制器设置为其委托:

UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aMethod)];
gestureRecognizer.delegate = self;
[self.view addGestureRecognizer:gestureRecognizer];
[gestureRecognizer release];

最后覆盖shouldReceiveTouch并取消不需要的触摸:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{

    if ([touch.view isKindOfClass:[UIButton class]]) { //Do not override UIButton touches
        return NO;
    }
    return YES;
}
于 2012-11-07T15:30:46.740 回答