我正在研究一种乐器类型的应用程序。它使用类似UIButtons的键盘来触发在发生touchDown时播放音符。该笔记根据touchUpInside或touchUpOutside事件停止播放。
除了尝试播放多个音符外,一切都按预期工作。 touchDown事件有效,但当按下另一个按钮时,如果按预期释放按钮,则不会发送touchUpInside事件。释放所有按钮后,touchUpInside将被发送到所有按钮。
在释放按钮之前,它似乎会缓冲其他触摸事件。如果释放按钮而另一个按下,则在释放所有其他按钮之前,不会将touchDown和touchUpInside事件发送到该按钮。然后将touchUpInside事件发送到第一个按钮,然后触发后续事件。
此流程已通过事件的IBActions代码进行了跟踪。我启用了多点触控。我尝试过允许多个手势识别器。似乎没有什么能影响这种行为。
由于按钮和事件是使用Interface Builder - Storyboard构建的,因此无法共享真正的代码。
在发布之前的触摸事件之前,是否存在阻止处理事件的事情?
任何建议都会受到赞赏?我搜索过其他类似的问题,但找不到这个问题。
谢谢!
答案 0 :(得分:2)
作为钢琴键,使用自定义视图,而不是UIButtons。通过将UILongPressGestureRecognizer附加到每个视图,您可以最轻松地跟踪要检测的触摸类型。或者,在较低级别,您可以直接检测触摸事件。