UIButton子类没有响应超级方法?

时间:2015-02-11 17:39:09

标签: ios iphone uibutton uicontrol uicontrolevents

我想创建一个切换其图像的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]];
}

这些方法均未触发。有线索吗?

3 个答案:

答案 0 :(得分:1)

我可能正在咆哮错误的树(双关语部分打算),但我创建了一个Swift项目,它可以完成我认为你所要求的。我意识到你正在使用ObjC,但为了我的时间,我在Swift中做到了。无论如何,它会给你一个开始的地方。

以下是GitHub上的回购:Click Here
- >注意:您需要使用> = Xcode 6来运行项目。

项目中需要注意的一些事项:
1 - 确保将Main.storyboard上的按钮连接到您创建的课程。
2 - 在Swift中,class MyButton: UIButton是为类实现UIButton的行。我确定有一个ObjC等价物,这个Stack Overflow问题可能在句法上有用:Click Here

希望其中一些有用!

祝你好运,
凯尔

答案 1 :(得分:0)

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

话虽如此,你应该尝试[self addTarget:self action:@selector(buttonTapped:) forControlEvents: UIControlEventsTouchUpInside]

答案 2 :(得分:-1)

如果你没有在UIButton子类上调用addTarget,唯一可能发生这种情况。