iOS-重新创建UIActionSheet/UIAlertController拖动以高亮显示

iOS-重新创建UIActionSheet/UIAlertController拖动以高亮显示,ios,swift,uialertcontroller,uiactionsheet,Ios,Swift,Uialertcontroller,Uiactionsheet,UIActionSheet的命中检测是如何工作的?当用户选择一个选项,然后将其手指移动到另一个选项时,另一个选项将高亮显示,如下面的GIF所示。检测还知道用户何时滚动 因此这是通过侦听多个uicontrol事件来实现的。很有可能你已经习惯于在ui按钮内收听touchup,因为这是ui按钮行为的标准。但除此之外还有很多。可以找到完整的列表和文档 在您的情况下,您希望收听touchDragEnter和touchdownide,使来自这些按钮的回调调用一些更改按钮背景颜色的代码 您还应收听touch

UIActionSheet的命中检测是如何工作的?当用户选择一个选项,然后将其手指移动到另一个选项时,另一个选项将高亮显示,如下面的GIF所示。检测还知道用户何时滚动


因此这是通过侦听多个
uicontrol事件来实现的。很有可能你已经习惯于在
ui按钮
内收听
touchup,因为这是
ui按钮
行为的标准。但除此之外还有很多。可以找到完整的列表和文档

在您的情况下,您希望收听
touchDragEnter
touchdownide
,使来自这些按钮的回调调用一些更改按钮背景颜色的代码

您还应收听
touchDragExit
touchupinder
以使背景颜色恢复正常

此外,您应该在
touchUpInside
中运行操作代码


我希望这能把事情弄清楚

因此这是通过侦听多个
uicontrol事件来实现的。很有可能你已经习惯于在
ui按钮
内收听
touchup,因为这是
ui按钮
行为的标准。但除此之外还有很多。可以找到完整的列表和文档

在您的情况下,您希望收听
touchDragEnter
touchdownide
,使来自这些按钮的回调调用一些更改按钮背景颜色的代码

您还应收听
touchDragExit
touchupinder
以使背景颜色恢复正常

此外,您应该在
touchUpInside
中运行操作代码


我希望这能把事情弄清楚

UIAlertController
包含子视图中类型为
UIStackView
的项目堆栈,此堆栈视图放置在类型为
的视图上\u UIInterfaceActionRepresentationsSequenceView
,该视图具有三种类型的手势识别器:

• UIScrollViewDelayedTouchesBeganGestureRecognizer
• UIScrollViewPanGestureRecognizer
• _UIDragAutoScrollGestureRecognizer
您可以使用Xcode内置工具:用户界面检查器来检查它

我认为这些识别器的定制处理程序提供了这个
拖动和突出显示功能


UIAlertController
句柄的内部逻辑在堆栈中触摸并点击测试子视图,并将用户手指下的项目的
高亮显示的
布尔属性设置为YES,其他项目设置为NO。

UIAlertController
包含子视图中类型为
UIStackView
的项目堆栈,此堆栈视图放置在类型为<代码>的视图上
,该视图具有三种类型的手势识别器:

• UIScrollViewDelayedTouchesBeganGestureRecognizer
• UIScrollViewPanGestureRecognizer
• _UIDragAutoScrollGestureRecognizer
您可以使用Xcode内置工具:用户界面检查器来检查它

我认为这些识别器的定制处理程序提供了这个
拖动和突出显示功能


UIAlertController
handle触摸并点击堆栈中的测试子视图的内部逻辑,并将用户手指下的项目的
高亮显示的
布尔属性设置为“是”,其他项目设置为“否”。

您需要为操作或取消按钮设置事件吗?请详细说明。我想在操作表中重新创建突出显示功能。当用户选择并保持UIAlertAction,然后拖动到下一个UIAlertAction时,将选择下一个UIAlertAction。是否需要该操作的事件或取消按钮?请详细说明。我想在操作表中重新创建突出显示功能。当用户选择并保持UIAlertAction,然后拖动到下一个UIAlertAction时,下一个UIAlertAction被选中。我通过打印所有事件来检查按钮,但当我从按钮外部拖动,然后通过拖动输入时,它没有调用。我注意到UIActionSheet没有任何UIButtons或uicontrol。这让我相信
touchsmoved(toucks:Set,with event:UIEvent?
正在使用,但此函数在UIScrollView中不执行。我通过打印所有事件来检查按钮,但当我从按钮外部拖动并通过拖动输入时,它没有调用。我注意到UIActionSheet没有任何UIButtons或uicontrol。这让我相信,
touchsmoved(toucks:Set,with event:UIEvent?
正在使用,但此函数不在UIScrollView中执行。