【问题标题】:Weird problem with UIControlStateHighlightedUIControlStateHighlighted 的奇怪问题
【发布时间】:2011-09-19 12:58:25
【问题描述】:

我在使用 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];

我已经坚持了一段时间,所以任何帮助将不胜感激......谢谢!

【问题讨论】:

  • 我怀疑它应该像 [button addTarget:self action:@selector(topCellPressed:) forControlEvents:UIControlStateHighlighted];
  • 但我不想要自我,我想要委托。正如我所说,该方法在委托中被调用就好了。
  • 然后查看 cellBackgroudSelected.png 图像是否在您的资源文件夹中
  • 是的,它就在那儿。我什至 NSLogged 看看它是否返回 nil 而它没有。
  • 代码在自定义视图中!!???

标签: objective-c ios cocoa-touch uibutton


【解决方案1】:

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

名义上是按你想要的按钮UIControlEventTouchUpInside

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-27
    • 2018-06-26
    • 2011-08-13
    • 2011-08-17
    • 2011-02-02
    • 2021-10-10
    • 2014-04-21
    • 2010-12-30
    相关资源
    最近更新 更多