0

我的 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;
}

这是 btnSelected 方法:

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

2 回答 2

7

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

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

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

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

于 2013-05-09T15:14:23.697 回答
0

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

UIControlEventTouchUpInside 控件中手指位于控件边界内的触摸事件。在 iOS 2.0 及更高版本中可用。在 UIControl.h 中声明。

于 2013-05-09T15:20:34.160 回答