我有一个带数字的DialPad,每个都是UIButton。
对于每个按钮,我处理2个controlEvents:
问题是有时候TouchUpInside没有被调用。它只发生在TouchDown事件期间播放音调时。 如果我评论播放铃声的代码,所有事件都会照常调用。
我添加了这样的控制事件:
self.addTarget(self, action: #selector(buttonPressed), forControlEvents: .TouchDown)
self.addTarget(self, action: #selector(buttonUnpressed), forControlEvents: .TouchUpInside)
被叫选择者:
func buttonPressed(button: KeyboardButton) {
print("IN")
ACRAccount.generateTone(0x30)
}
func buttonUnpressed(button: KeyboardButton) {
print("OUT")
ACRAccount.stopGeneratingTone()
}
我使用外部的objective-c库来播放这样的语气:
+ (void)generateTone:(int)tone
{
dispatch_async(dispatch_get_main_queue(), ^{
myExternalLibrary->audio->playTone((char)tone);
});
}
感谢您的帮助!
编辑1 :似乎调用了.TouchCancel
而不是.TouchUpInside
。
这是由于我的Objective-C代码,因为一旦评论,它就像一个魅力(没有任何调用.TouchCancel
)。
知道为什么吗?