【发布时间】:2014-09-05 06:13:38
【问题描述】:
我正在尝试创建一个 UIBarButtonItem 的子类,我可以在 Storyboards/Xibs 中使用该子类,其中可以收听 touchesBegan 动作(在触摸按钮时播放按钮声音)。这是我得到的:
class UIAudibleBarButtonItem : UIBarButtonItem {
override init() {
super.init()
target = self
action = "touchesBegan:"
}
required init(coder aDecoder:NSCoder) {
super.init(coder: aDecoder)
}
func touchesBegan(touches:NSSet, withEvent event:UIEvent) {
AudioManager.instance.playButtonSound()
}
}
但是它不起作用,即不调用 touchesBegan。我需要进行哪些更改才能完成这项工作?
更新:
class UIAudibleBarButtonItem : UIBarButtonItem {
override init() {
super.init();
setup();
}
override init(barButtonSystemItem systemItem: UIBarButtonSystemItem, target: AnyObject?, action: Selector) {
super.init(barButtonSystemItem: systemItem, target: target, action: action);
setup();
}
override init(image: UIImage?, landscapeImagePhone: UIImage?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector) {
super.init(image: image, landscapeImagePhone: landscapeImagePhone, style: style, target: target, action: action);
setup();
}
override init(image: UIImage?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector) {
super.init(image: image, style: style, target: target, action: action);
setup();
}
override init(title: String?, style: UIBarButtonItemStyle, target: AnyObject?, action: Selector) {
super.init(title: title, style: style, target: target, action: action);
setup();
}
override init(customView:UIView) {
super.init(customView: customView);
setup();
}
required init(coder aDecoder:NSCoder) {
super.init(coder: aDecoder);
setup();
}
private func setup()
{
target = self;
action = "buttonPressed:";
println("setup()");
}
func buttonPressed(sender:AnyObject)
{
AudioManager.instance.playButtonSound();
println("buttonPressed()");
}
}
【问题讨论】:
-
Hitest 并检查哪个视图正在处理触摸。
标签: ios iphone cocoa-touch swift uibarbuttonitem