Ios UI按钮未在边框上突出显示

Ios UI按钮未在边框上突出显示,ios,objective-c,uibutton,uigesturerecognizer,Ios,Objective C,Uibutton,Uigesturerecognizer,我使用以下代码以编程方式创建UIButton: myButton = [UIButton new]; [myButton setImage:[UIImage imageNamed:@"myButtonNormal"] forState:UIControlStateNormal]; [myButton setBackgroundImage:[UIImage imageNamed:@"myButtonBackgroundNormal"]

我使用以下代码以编程方式创建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];
现在我遇到的问题是点击按钮时高亮显示。它工作得很好,即点击时按钮颜色会发生变化,除非我在按钮左侧的边界处单击。为了说明这一点:

单击按钮的绿色部分时,一切正常,按钮高亮显示。单击红色部分时,将调用按钮的选择器,即按钮工作,但高亮显示不工作

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

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


你知道这里可能有什么问题吗?

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

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

- (void)highlightButtonBorder:(id)sender
{
    myButton.layer.borderColor = [[UIColor redColor]CGColor];
}
不要忘记在框架下导入-

 #import <QuartzCore/QuartzCore.h>
#导入

最后我意识到问题出在我拥有的
UIScreenedGepangEstureRecognitor
。由于“我的按钮”位于屏幕的左侧,因此该按钮的左侧小部分已被
UIScreenedGepangestureRecognitor
取消。我通过将以下代码添加到我的
UIViewController
,解决了这个问题:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
    if ([touch.view isKindOfClass:[UIButton class]])
    {
        return NO;
    }
    return YES;
}

你如何改变按钮的颜色?您是否已将
UIButton
子类化?否,我依赖于默认的iOS行为。此代码没有任何可见的变化。正如我已经说过的,按钮有一个背景图像,这可能就是为什么没有边框。顺便说一句,当我在问题中提到边界时,我指的是靠近按钮边缘的一个非常小的区域,而不是层的实际边界元素。