为什么在按下另一个按钮时不会在 uibutton 上触发 touch-up inside 事件?

Why is touch-up-inside event not triggered on a uibutton when another button is being pressed?

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

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

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

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

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

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

有什么建议吗?我已经搜索过其他类似的问题,但没有找到这个问题。

谢谢!

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