UIButton 子类不响应超级方法?
UIButton subclass not responding to super methods?
我想创建一个可以切换其图像的 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]];
}
None 这些方法被触发。有什么线索吗?
我的猜测是前两个未被调用,因为该按钮没有任何 target
注册到 selector
。第三个没有被调用有点意外。
话虽如此,您应该尝试 [self addTarget:self action:@selector(buttonTapped:) forControlEvents: UIControlEventsTouchUpInside]
。
发生这种情况的唯一方法是您没有在 UIButton 子类上调用 addTarget
。
我可能找错了树(部分是双关语),但我创建了一个 Swift 项目来完成我认为您所要求的。我知道您使用的是 ObjC,但为了节省时间,我在 Swift 中做了它。无论如何,它会给你一个起点。
这是 GitHub 上的回购:Click Here
--> 注意:你需要 >= Xcode 6 到 运行 项目。
项目中需要注意的几点:
1 - 确保将 Main.storyboard
上的按钮连接到您创建的 class。
2 - 在 Swift 中,class MyButton: UIButton
是为 class 实现 UIButton
的行。我确定有一个 ObjC 等价物,这个 Stack Overflow 问题在语法上可能会有帮助:Click Here
希望其中的一些内容对您有所帮助!
祝你好运,
凯尔
我想创建一个可以切换其图像的 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]];
}
None 这些方法被触发。有什么线索吗?
我的猜测是前两个未被调用,因为该按钮没有任何 target
注册到 selector
。第三个没有被调用有点意外。
话虽如此,您应该尝试 [self addTarget:self action:@selector(buttonTapped:) forControlEvents: UIControlEventsTouchUpInside]
。
发生这种情况的唯一方法是您没有在 UIButton 子类上调用 addTarget
。
我可能找错了树(部分是双关语),但我创建了一个 Swift 项目来完成我认为您所要求的。我知道您使用的是 ObjC,但为了节省时间,我在 Swift 中做了它。无论如何,它会给你一个起点。
这是 GitHub 上的回购:Click Here
--> 注意:你需要 >= Xcode 6 到 运行 项目。
项目中需要注意的几点:
1 - 确保将 Main.storyboard
上的按钮连接到您创建的 class。
2 - 在 Swift 中,class MyButton: UIButton
是为 class 实现 UIButton
的行。我确定有一个 ObjC 等价物,这个 Stack Overflow 问题在语法上可能会有帮助:Click Here
希望其中的一些内容对您有所帮助!
祝你好运,
凯尔