0

我正在开发一个乐器类型的应用程序。当 touchDown 发生时,它使用一个类似 UIButtons 的键盘来触发播放音符。音符会根据 touchUpInside 或 touchUpOutside 事件停止播放。

除了尝试演奏多个音符时,一切都按预期工作。touchDown 事件有效,但是当继续触摸另一个按钮时,按预期释放按钮时不会发送 touchUpInside 事件。当所有按钮被释放时,touchUpInside 被发送到所有按钮。

它似乎缓冲其他触摸事件,直到释放所按住的按钮。如果一个按钮被释放而另一个按钮被按下,touchDown 和 touchUpInside 事件不会发送到该按钮,直到所有其他按钮都被释放。然后将 touchUpInside 事件发送到第一个按钮并触发后续事件。

此流程已通过事件的 IBActions 的代码进行跟踪。我启用了多点触控。我试过允许多个手势识别器。似乎没有什么影响这种行为。

由于按钮和事件是使用 Interface Builder - Storyboard 构建的,因此没有真正的代码可以共享。

在释放先前的触摸事件之前,是否有什么东西阻碍了事件的处理?

任何建议,将不胜感激?我已经搜索了其他类似的问题,但找不到这个问题。

谢谢!

4

1 回答 1

2

作为您的钢琴键,使用自定义视图,而不是 UIButtons。您可以通过将 UILongPressGestureRecognizer 附加到每个视图来最轻松地跟踪您想要检测的触摸类型。或者,在较低级别,您可以简单地直接检测触摸事件。

于 2017-04-23T19:52:42.730 回答