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

don*_*sci 0 iphone objective-c ios

我在UIButtons上的操作遇到了一些麻烦.我正在以编程方式创建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;
}
Run Code Online (Sandbox Code Playgroud)

这是btnSelected方法:

-(void)btnSelected:(UIButton *)button
{
    NSLog(@"Button %ld Clicked",(long int)[button tag]);
} 
Run Code Online (Sandbox Code Playgroud)

Sul*_*han 7

您显示的代码没问题.可能的问题是:

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

  2. 你的按钮被他们的超级视图剪辑.确保您的按钮位于其超视图的范围内(并且超视图位于其超视图的范围内等).

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