我有许多UIButtons链接到代码,但我希望有一个适用于所有UI按钮的方法,无需将方法连接到按钮,按下每个按钮时播放声音。有没有办法检测何时按下常规UI按钮?即使没有链接到任何代码?
答案 0 :(得分:4)
正如我的评论中所提到的,一个选项是通过继承UIButton
。您可以创建UIButton
的子类并实现其init
方法以添加将在按下时播放声音的操作。这就像普通的按钮动作,但目标将是这个自定义子类。
- (id)initWithFrame:(CGRect)frame {
if (self=[super initWithFrame:frame]) {
[self addTarget:self action:@selector(playSound) forControlEvents:UIControlEventTouchUpInside];
}
return self;
}
- (void)playSound {
//play sound
}
然后使用按钮
CustomButton *aButton = [[CustomButton alloc] initWithFrame:aFrame];
如果您使用的是xib或storyboard,则可以将按钮对象的类别从UIButton
更改为CustomButton
。