小编qit*_*shi的帖子

SwiftUI onMoveCommand 操作未执行

我正在使用 SwiftUI 制作 macOS 应用程序,并且我想使用内置键盘上的箭头键来偏移 SwiftUI 视图。

我在网上找不到很多资源,但onMoveCommand()似乎是我需要的事件处理程序。尝试后,我发现我指定的操作onMoveCommand()似乎没有被执行。这是我为了测试它而编写的一些代码:

struct ContentView: View {
    var body: some View {
        Text("Hello")
            .onAppear() {
                print("Appeared!")
            }
            .onMoveCommand() { (direction) in
                print("Moved!")
            }
            .onTapGesture() {
                print("Tapped!")
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

onMoveCommand()不打印“已移动!” 当我按箭头键时,我会听到错误警报声,但没有打印任何内容。onAppear()成功打印“出现了!” 视图出现时显示消息,并onTapGesture()打印“Tapped!” 每当我单击文本时都正确。这似乎告诉我,我为这些视图事件获得的基本语法是正确的,但我实现onMoveCommand()不正确。

现在,我只希望我的应用程序在按下箭头键时将某些内容打印到 Xcode 控制台,并能够区分按下的是哪个箭头键。有人可以解释一下我做错了什么吗?

macos swift swiftui

8
推荐指数
1
解决办法
1325
查看次数

SwiftUI:检测 Mac 触控板上的手指位置

我正在为 macOS 制作一个 SwiftUI 应用程序,我想通过检测用户手指的位置将触控板用作 (x, y) 输入。我想能够检测到的多个手指在触控板上(不拖移)。我怎么做?

以前有人问过类似的问题,但我再次问,因为那是近 10 年前的问题,答案都在 Obj-C 中(Swift 3 中的一个),我想知道是否有更新的方法。最重要的是,我不知道如何将 Obj-C 代码实现到我的 SwiftUI 应用程序中,所以如果没有任何更新的方法,如果有人能解释如何实现旧的 Obj-C 代码,我将不胜感激。

为了说明我的意思,AudioSwift 应用程序的这个视频演示正是我想要的。macOS 本身也用这个来手写中文(虽然我不需要识别字符)。

macos cocoa appkit swift swiftui

7
推荐指数
1
解决办法
625
查看次数

Swift:SwiftUI View 的多个条件的内联评估

在 SwiftUI 中,要View根据条件修改 a,我们可以使用三元运算符,因此允许两种情况。但是,如果我想评估多个条件,使其更像 a switch(多个情况)而不是if/ else(两个情况),我该怎么办?

为了演示,可以使用三元运算符通过如下方式Text修改视图:@State var isLoggedIn: Bool

Text(self.isLoggedIn ? "Welcome!" : "Please log in")
Run Code Online (Sandbox Code Playgroud)

如果我现在想要添加更多情况,会做的是使用函数,但这使得代码比三元运算符的简单优雅长很多:

struct ContentView: View {

    enum Status {
        case loggedIn, loggedOut, expired
    }

    @State var userStatus: Status

    func displayMessage(status: Status) -> some View {
        switch(status) {
        case .loggedIn:
            return Text("Welcome!")
        case .loggedOut:
            return Text("Please log in")
        case .expired:
            return Text("Session expired")
        }
    }

    var body: some View {
        displayMessage(status: userStatus)
        // …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

5
推荐指数
1
解决办法
1777
查看次数

标签 统计

swift ×3

swiftui ×3

macos ×2

appkit ×1

cocoa ×1