所以这是通过听多个UIControlEvents
来实现的。有可能你习惯听touchUpInside
,因为这是UIButton
行为的标准。但除此之外还有更多。完整列表和文档可以找到here。
在你的情况下,你想听touchDragEnter
和touchDownInside
,使这些回调调用一些改变按钮背景颜色的代码。
您还应该听touchDragExit
和touchUpInside
将背景颜色恢复正常。
此外,您应该在touchUpInside
中运行操作代码。
我希望这能解决问题!
UIAlertController
在子视图中包含一堆项目,类型为UIStackView
,此堆栈视图放置在类型为_UIInterfaceActionRepresentationsSequenceView
的视图上,该类型具有三个类型的手势识别器:
• UIScrollViewDelayedTouchesBeganGestureRecognizer
• UIScrollViewPanGestureRecognizer
• _UIDragAutoScrollGestureRecognizer
您可以使用Xcode内置工具检查它:用户界面检查器。
我认为这些识别器的自定义处理程序提供了这种drag-and-highlight
功能。
UIAlertController
的内部逻辑处理堆栈中的触摸和命中测试子视图,并将用户手指下的项目的highlighted
布尔属性设置为YES,而将其他设置设置为NO。