[英]Unable to programmatically set UIButton action
我在UIButton上的操作遇到了一些麻烦。 我正在以编程方式创建4个按钮,但无法触发TouchUpInside事件。
我已经读过SO了,但是仍然遇到麻烦,因此任何指针都将不胜感激!
这是我创建和设置按钮及其动作的代码:
UIButton *btn;
float newWidth = 10;
for (int i = 0; i < _btnImages.count; ++i) {
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
CGRect imageFrame = CGRectMake(/*X*/newWidth, /*Y*/height - 80, 65, 65);
btn.frame = imageFrame;
btn.tag = i;
[btn setBackgroundImage:[UIImage imageNamed:[_btnImages objectAtIndex:i]] forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(btnSelected:)
forControlEvents:UIControlEventTouchUpInside];
[btn setEnabled:true];
[self addSubview:btn];
newWidth = newWidth + 75;
}
这是btnSelected方法:
-(void)btnSelected:(UIButton *)button
{
NSLog(@"Button %ld Clicked",(long int)[button tag]);
}
您显示的代码还可以。 可能的问题是:
您正在将按钮添加到禁用了用户交互的视图中(或其任何祖先禁用了用户交互的视图)。
您的按钮受其超级视图的限制。 确保您的按钮在其超级视图的范围内(并且超级视图在其超级视图的范围内,等等)。
当视图上有手势识别器时,可能会发生其他问题-它们可能会延迟和取消子视图(包括按钮)中的触摸。 确保触摸事件未由某些手势识别器处理。
当您从按钮范围内释放按钮时,也会触发UIControlEventTouchUpInside
...这可能是一个棘手的概念,但是如果您按下按钮,然后从按钮范围之外释放,则不会触发此控件事件。
UIControlEventTouchUpInside控件中的修饰事件,手指在控件的边界内。 在iOS 2.0及更高版本中可用。 在UIControl.h中声明。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.