繁体   English   中英

无法以编程方式设置UIButton操作

[英]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]);
} 

您显示的代码还可以。 可能的问题是:

  1. 您正在将按钮添加到禁用了用户交互的视图中(或其任何祖先禁用了用户交互的视图)。

  2. 您的按钮受其超级视图的限制。 确保您的按钮在其超级视图的范围内(并且超级视图在其超级视图的范围内,等等)。

  3. 当视图上有手势识别器时,可能会发生其他问题-它们可能会延迟和取消子视图(包括按钮)中的触摸。 确保触摸事件未由某些手势识别器处理。

当您从按钮范围内释放按钮时,也会触发UIControlEventTouchUpInside ...这可能是一个棘手的概念,但是如果您按下按钮,然后从按钮范围之外释放,则不会触发此控件事件。

UIControlEventTouchUpInside控件中的修饰事件,手指在控件的边界内。 在iOS 2.0及更高版本中可用。 在UIControl.h中声明。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM