Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 为什么当按下另一个按钮时,uibutton上未触发内部触摸事件?_Swift_Uibutton_Touch Up Inside - Fatal编程技术网

Swift 为什么当按下另一个按钮时,uibutton上未触发内部触摸事件?

Swift 为什么当按下另一个按钮时,uibutton上未触发内部触摸事件?,swift,uibutton,touch-up-inside,Swift,Uibutton,Touch Up Inside,我正在开发一个乐器类型的应用程序。它使用一组类似键盘的按钮来触发触地时播放音符。基于触碰内侧或触碰外侧事件,音符停止播放 除尝试播放多个音符外,所有操作均按预期进行。触地事件起作用,但当继续触碰另一个按钮时,按预期释放按钮时,不会发送触地内部事件。当所有按钮松开时,触控按钮将发送到所有按钮 它似乎会缓冲其他触摸事件,直到松开所按住的按钮。如果释放一个按钮并按下另一个按钮,则在释放所有其他按钮之前,触地和触地内部事件不会发送到该按钮。然后,touchUpInside事件被发送到第一个按钮,随后的事

我正在开发一个乐器类型的应用程序。它使用一组类似键盘的按钮来触发触地时播放音符。基于触碰内侧或触碰外侧事件,音符停止播放

除尝试播放多个音符外,所有操作均按预期进行。触地事件起作用,但当继续触碰另一个按钮时,按预期释放按钮时,不会发送触地内部事件。当所有按钮松开时,触控按钮将发送到所有按钮

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

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

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

是否存在阻碍事件处理的因素,以等待先前触摸事件的发布

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


谢谢大家!

作为钢琴键,使用自定义视图,而不是按钮。通过在每个视图上附加UILongPressGestureRecognitor,您可能最容易跟踪想要检测的触摸类型。或者,在较低的级别上,您可以直接检测触摸事件。

作为钢琴键,使用自定义视图,而不是UI按钮。通过在每个视图上附加UILongPressGestureRecognitor,您可能最容易跟踪想要检测的触摸类型。或者,在较低的级别上,您可以直接检测触摸事件。

不要使用按钮。使用自定义视图、轨道接触开始和接触结束。@matt,您的建议有什么原因或解释吗?你知道为什么UIButtons的触地和触地事件会发生问题吗?你需要考虑iOS(可能还有任何操作系统)是如何处理“触碰”和“按钮点击”的。(在大多数情况下,它们是相同的。)你[通常]不会通过“多点触摸”来打开应用程序、在[物理或软件]键盘上键入内容等。你可以一次点击、触摸或鼠标点击一次。@matt所说的是正确的-使用自定义视图(甚至不是自定义按钮,因为它继承自NSControl)并自己编写触摸开始/结束。基本上,你要求我重复我已经说过的和dfd已经说过的。NSControl和control事件以及它们何时被发送是一个非常高级的触摸分析和报告。在这种奇怪的多点触控情况下(同时触碰多个按钮),您希望触地和触地内会被发送,但事实并非如此。你说“任何建议都将不胜感激”,你得到了建议。按钮按其工作方式工作。这不是你想要的。所以不要使用它们。没什么大不了的。关于你对马特的评论,有两点是一致的。(1) IB的一个弱点是它是一个设计时工具,像自动布局这样的东西可能会有运行时的需求,比如方向变化、动画等。虽然这可能不是您面临的确切问题,但深入理解布局、查看事件等总是有帮助的。(2) 我从1984年就开始专业编程,但从2004年开始我才涉足Xcode。当时它是两个非常独立的应用程序,只使用Objective-C进行编码。相信我,那里的资源大约有两个级别更好,我确信每年都在改进。不要使用按钮来实现这一点。使用自定义视图、轨道接触开始和接触结束。@matt,您的建议有什么原因或解释吗?你知道为什么UIButtons的触地和触地事件会发生问题吗?你需要考虑iOS(可能还有任何操作系统)是如何处理“触碰”和“按钮点击”的。(在大多数情况下,它们是相同的。)你[通常]不会通过“多点触摸”来打开应用程序、在[物理或软件]键盘上键入内容等。你可以一次点击、触摸或鼠标点击一次。@matt所说的是正确的-使用自定义视图(甚至不是自定义按钮,因为它继承自NSControl)并自己编写触摸开始/结束。基本上,你要求我重复我已经说过的和dfd已经说过的。NSControl和control事件以及它们何时被发送是一个非常高级的触摸分析和报告。在这种奇怪的多点触控情况下(同时触碰多个按钮),您希望触地和触地内会被发送,但事实并非如此。你说“任何建议都将不胜感激”,你得到了建议。按钮按其工作方式工作。这不是你想要的。所以不要使用它们。没什么大不了的。关于你对马特的评论,有两点是一致的。(1) IB的一个弱点是它是一个设计时工具,像自动布局这样的东西可能会有运行时的需求,比如方向变化、动画等。虽然这可能不是您面临的确切问题,但深入理解布局、查看事件等总是有帮助的。(2) 我从1984年就开始专业编程,但从2004年开始我才涉足Xcode。当时它是两个非常独立的应用程序,只使用Objective-C编码。相信我,那里的资源大约有两个级别更好,而且我确信每年都在改进。根据你的建议,我正在重新编码以使用触摸,并取消使用UIButton键。正如我之前所建议的,我不得不为项目的另一个功能部分做同样的事情。我的挫败感没有集中在你身上。我为你不得不重复一遍而道歉。非常感谢。根据你的建议,我是r