UIControlState突出显示的奇怪问题

时间:2011-09-19 12:58:25

标签: objective-c ios cocoa-touch uibutton

我遇到了UIButton的奇怪问题。我为状态UIControlStateHighlighted设置了它的背景图像,但背景图像没有改变我点击它。目标/选择器仍然被调用,但是,如果我删除目标/选择器,那么它可以正常工作。

这是我的代码:

  UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(currentXPos, 0, minWidth + additionalSpacing, self.bounds.size.height)];
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroud.png"] forState:UIControlStateNormal];
    [button setBackgroundImage:[UIImage imageNamed:@"cellBackgroudSelected.png"] forState:UIControlStateHighlighted];
    [button setTitle:text forState:UIControlStateNormal];
    [button setTitleColor:[UIColor orangeColor] forState:UIControlStateNormal];
    [[button titleLabel] setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:14]];
    [button setTag:i];
    [button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlStateHighlighted];
    [self addSubview:button];

我已经坚持了一段时间,所以任何帮助都会受到赞赏...谢谢!

1 个答案:

答案 0 :(得分:1)

您使用错误的类型作为目标指定。您想要一个UIControlEvent而不是UIControlState。你正在设置按钮的东西当前是垃圾,因为控制状态是一个非常不同的位掩码来控制事件。

名义上要按下UIControlEventTouchUpInside

按钮
[button addTarget:delegate action:@selector(topCellPressed:) forControlEvents:UIControlEventTouchUpInside];

我很惊讶编译器没有给你一个警告。