如何在SwiftUI中检测右键?

本·莱吉耶罗

我正在编写一个简单的Mines应用程序,以帮助我了解SwiftUI。因此,我希望主要点击(通常是LMB)“挖”(显示那里是否有矿井),以及希望次要点击(通常是RMB)来标记。

我正在挖掘工作!但是我不知道如何放置标记,因为我不知道如何检测辅助点击。

这是我正在尝试的

BoardSquareView(
    style: self.style(for: square),
    model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.gesture(TapGesture().onEnded(self.handleUserDidTap(square)))

正如我前面所暗示的那样,handleUserDidTap单击时可以正确调用by返回的函数,但是handleUserDidAltTap只有在按住Control键时才能调用by返回的函数这是有道理的,因为这就是代码的意思……但是我看不到任何可以使它注册第二次点击的API,因此我不知道该怎么办。

我也尝试过此方法,但行为似乎相同:

BoardSquareView(
    style: self.style(for: square),
    model: square
)
.gesture(TapGesture().modifiers(.control).onEnded(self.handleUserDidAltTap(square)))
.onTapGesture(self.handleUserDidTap(square))
英国电信

就目前SwiftUI而言,这不可能直接实现。我敢肯定会在将来,但是目前,TapGesture它显然主要集中在没有“右键单击”概念的iOS用例上,因此我认为这就是为什么忽略了这一点。请注意,“长按”概念是的形式的头等公民LongPressGesture,并且几乎完全在支持这种理论的iOS上下文中使用。

也就是说,我确实想出了一种方法来完成这项工作。您所要做的就是依靠旧技术,然后将其嵌入到SwiftUI视图中。

struct RightClickableSwiftUIView: NSViewRepresentable {
    func updateNSView(_ nsView: RightClickableView, context: NSViewRepresentableContext<RightClickableSwiftUIView>) {
        print("Update")
    }

    func makeNSView(context: Context) -> RightClickableView {
        RightClickableView()
    }

}

class RightClickableView : NSView {
    override func mouseDown(with theEvent: NSEvent) {
        print("left mouse")
    }

    override func rightMouseDown(with theEvent: NSEvent) {
        print("right mouse")
    }
}

我对此进行了测试,并在一个相当复杂的SwiftUI应用程序中为我工作。这里的基本方法是:

  1. 将您的侦听组件创建为NSView
  2. 使用实现的SwiftUI视图将其包装NSViewRepresentable
  3. 就像将任何其他SwiftUI视图一样,将实现放入所需的UI中。

这不是一个理想的解决方案,但对于目前而言可能已经足够了。我希望这能解决您的问题,直到Apple进一步扩展SwiftUI的功能为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Javascript中检测Chromecast设备

来自分类Dev

如何在SQL查询中检测泰语

来自分类Dev

如何在Chrome中检测闪烁

来自分类Dev

如何在watIn中检测新窗口

来自分类Dev

如何在Haskell中检测列表的结尾?

来自分类Dev

如何在ReactIOS的选项卡的NavigatorIOS中添加右键

来自分类Dev

如何在keyTypedEvent中检测退格

来自分类Dev

如何在UIScrollView中检测触摸点

来自分类Dev

如何检测右键单击+左键单击

来自分类Dev

如何在导航栏中添加右键?

来自分类Dev

如何在Matlab中检测平滑曲线

来自分类Dev

iOS SwiftUI:如何在视图中检测UITapGesture的位置?

来自分类Dev

如何在Lubuntu的右键菜单中添加“刷新”选项?

来自分类Dev

如何在SwiftUI tvOS中检测``点击''手势

来自分类Dev

如何在SwiftUI ScrollView中以编程方式检测滚动方向

来自分类Dev

如何正确检测鼠标右键?

来自分类Dev

如何在p5.js中启用右键单击?

来自分类Dev

iOS SwiftUI:如何在视图中检测UITapGesture的位置?

来自分类Dev

如何在右键菜单中添加条目?

来自分类Dev

如何在Lubuntu的右键菜单中添加“刷新”选项?

来自分类Dev

如何在Windows 7中配置右键菜单?

来自分类Dev

如何在jquery中启用右键单击?

来自分类Dev

如何在PyQt中禁用QTreeWidget中的右键单击?

来自分类Dev

如何在Ubuntu 12.04中获得透明的右键单击菜单?

来自分类Dev

如何在Ubuntu 16.04的右键菜单中添加刷新选项?

来自分类Dev

如何在Nautilus的右键菜单中添加“显示隐藏的文件”?

来自分类Dev

如何在Pygame中同时检测鼠标左键和右键单击

来自分类Dev

如何在 NightmareJS 中启用右键单击?

来自分类Dev

如何在 selenium-webdriver 中实现右键单击?

Related 相关文章

热门标签

归档