在Uicontextmenu预览提供商中接受TAPS
tl; dr:如何在uicontextmenucontentpreviewprovider
查看控制器中接受按钮上的龙头上的龙头?
我正在为uicontextmenu
介绍一个自定义预览控制器,通过uicontextmenucontentpreviewprovider
在我的uicontextmenuconfiguration
initializer中设置。该视图按按钮按预期显示,但是点击它只是将预览丢弃,而没有按钮捕获的触摸。这是预览API的固有限制,还是我缺少启用交互的东西?
这是代码创建预览的一个粗略示例:
return UIContextMenuConfiguration(
identifier: messageId.value as NSString,
previewProvider: nil,
previewProvider: {
let viewController = UIViewController()
viewController.view.backgroundColor = .green
let button = UIButton(type: .infoLight)
button.addAction(UIAction(handler: { _ in
print("Button")
}), for: .touchUpInside)
button.sizeToFit()
viewController.view.addSubview(button)
button.center = viewController.view.center
return viewController
},
actionProvider: {_ in
return UIMenu(title: "", children: reactionOptions)
}
)
tl;dr: How do I accept taps on a button within a UIContextMenuContentPreviewProvider
view controller?
I'm presenting a custom preview controller for a UIContextMenu
, set via UIContextMenuContentPreviewProvider
in my UIContextMenuConfiguration
initializer. The view displays as expected with a button, but tapping it simply dismisses the preview, with no touches being captured by the button. Is that an inherent limitation of the preview API, or is there something I'm missing to enable interaction?
Here's a rough example of the code creating the preview:
return UIContextMenuConfiguration(
identifier: messageId.value as NSString,
previewProvider: nil,
previewProvider: {
let viewController = UIViewController()
viewController.view.backgroundColor = .green
let button = UIButton(type: .infoLight)
button.addAction(UIAction(handler: { _ in
print("Button")
}), for: .touchUpInside)
button.sizeToFit()
viewController.view.addSubview(button)
button.center = viewController.view.center
return viewController
},
actionProvider: {_ in
return UIMenu(title: "", children: reactionOptions)
}
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您只能在整个预览视图上使用点击:
查看
uicontextMenuInteractionDelegate
或
wkwebview
使用wkuidelegate
You can handle only tap on whole preview view:
Take a look at
UIContextMenuInteractionDelegate
Or for
WKWebView
useWKUIDelegate