我使用以下代码以编程方式创建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方法.
知道这可能是什么问题吗?
最佳答案 最后我意识到问题是我拥有的UIScreenEdgePanGestureRecognizer.由于我的按钮位于屏幕左侧,因此按钮的这个小左侧部分被UIScreenEdgePanGestureRecognizer取消.我通过将以下代码添加到我的UIViewController来解决这个问题:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
{
if ([touch.view isKindOfClass:[UIButton class]])
{
return NO;
}
return YES;
}