1

我想创建一个切换其图像的 UIButton。单击后,图像应更改为另一个图像并保持这种状态,直到再次单击为止。

我已将这两个图像添加到界面生成器上按钮的默认状态和选定状态。

现在,我创建了一个 UIButton 子类。我的想法是拦截对该按钮的点击并更改按钮状态。所以我将它添加到 UIButton 子类中,希望这些方法之一可以通过点击来触发。

- (void)sendAction:(SEL)action
                to:(id)target
          forEvent:(UIEvent *)event {

  [super sendAction:action to:target forEvent:event];

  // toggle state
  [self setSelected:![self isSelected]];

}


- (void)sendActionsForControlEvents:(UIControlEvents)controlEvents {
  [super sendActionsForControlEvents:controlEvents];

  // toggle state
  [self setSelected:![self isSelected]];

}


- (void)touchesEnded:(NSSet *)touches
           withEvent:(UIEvent *)event {

  [super touchesEnded:touches withEvent:event];
  // toggle state
  [self setSelected:![self isSelected]];
}

这些方法都不会被触发。有什么线索吗?

4

3 回答 3

1

我可能会叫错树(双关语部分是有意的),但我创建了一个 Swift 项目,它可以满足您的要求。我意识到您正在使用 ObjC,但由于我的时间缘故,我在 Swift 中制作了它。无论如何,它会给你一个开始的地方。

这是 GitHub 上的存储库:单击此处
--> 注意:您需要 >= Xcode 6 才能运行该项目。

项目中需要注意的几点:
1 - 确保将 Button 连接Main.storyboard到您创建的类。
2 - 在 Swift 中,class MyButton: UIButton是为类实现的行UIButton。我确定有一个 ObjC 等价物,这个 Stack Overflow 问题在语法上可能会有所帮助:点击这里

希望其中一些有用!

祝你好运,
凯尔

于 2015-02-11T18:06:23.000 回答
0

我的猜测是前两个没有被调用,因为按钮没有任何target注册到selectors 的 s。第三个没有被调用有点令人惊讶。

话虽这么说,你应该试试[self addTarget:self action:@selector(buttonTapped:) forControlEvents: UIControlEventsTouchUpInside]

于 2015-02-11T17:45:21.483 回答
-1

发生这种情况的唯一方法是您没有调用addTargetUIButton 子类。

于 2015-02-11T17:48:07.217 回答