我想创建一个切换其图像的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]];
}
这些方法均未触发。有线索吗?
答案 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
,唯一可能发生这种情况。