UIButton未在边框上突出显示

时间:2015-05-20 10:29:26

标签: ios objective-c uibutton uigesturerecognizer

我使用以下代码以编程方式创建UIButton:

myButton = [UIButton new];
[myButton setImage:[UIImage imageNamed:@"myButtonNormal"]
                              forState:UIControlStateNormal];
[myButton setBackgroundImage:[UIImage imageNamed:@"myButtonBackgroundNormal"]
                                        forState:UIControlStateNormal];
myButton.alpha = MY_BUTTON_ALPHA;

[myButton addTarget:self
             action:@selector(myButtonSelector:)
   forControlEvents:UIControlEventTouchUpInside];

[self.parentViewController.view insertSubview:myButton 
                                      atIndex:10];

现在我遇到的问题是在点击按钮时突出显示该按钮。它运行良好,即按钮颜色随点击而变化,除非我点击按钮左侧的边框。为了说明这一点:

enter image description here

单击按钮的绿色部分时,一切正常,按钮突出显示。当点击红色部分时,调用按钮的选择器,即按钮工作,但突出显示不起作用。

我在模拟器上对此进行了测试,以便能够进行更精确的点击。

至于定位按钮,我以编程方式设置它的约束,使其实际上在其父视图之外。父视图有一个附加的手势识别器,我正在玩它,试图查看识别器是否干扰按钮,但是当点击按钮时,不会调用父视图的UIGestureRecognizerDelegate方法。

知道这可能是什么问题吗?

2 个答案:

答案 0 :(得分:2)

最后我意识到问题是UIScreenEdgePanGestureRecognizer我有。由于我的按钮位于屏幕左侧,因此按钮的这个小左侧部分被UIScreenEdgePanGestureRecognizer取消。我通过将以下代码添加到UIViewController

来解决了这个问题
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }
    return YES;
}

答案 1 :(得分:0)

我认为这个问题无法通过实际设备检测到。但您可以尝试下面的按钮边框突出显示代码 -

[myButton addTarget:self action:@selector(highlightButtonBorder:) forControlEvents:UIControlEventTouchDown];

- (void)highlightButtonBorder:(id)sender
{
    myButton.layer.borderColor = [[UIColor redColor]CGColor];
}

请勿忘记在框架下方导入 -

 #import <QuartzCore/QuartzCore.h>