我试图创建一个UIBarButtonItem
的子类,我可以在故事板/ Xib中使用touchesBegan可以侦听动作(在触摸按钮时播放按钮声音)。这是我得到的:用touchesBegan动作继承UIBarButtonItem
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没有被调用。我需要改变以做出这项工作?
UPDATE:
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并检查哪个视图正在处理触摸。 – Woodstock 2014-09-05 06:23:50