我正在使用 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 制作一个 SwiftUI 应用程序,我想通过检测用户手指的位置将触控板用作 (x, y) 输入。我想能够检测到的多个手指搁在触控板上(不拖移)。我怎么做?
以前有人问过类似的问题,但我再次问,因为那是近 10 年前的问题,答案都在 Obj-C 中(Swift 3 中的一个),我想知道是否有更新的方法。最重要的是,我不知道如何将 Obj-C 代码实现到我的 SwiftUI 应用程序中,所以如果没有任何更新的方法,如果有人能解释如何实现旧的 Obj-C 代码,我将不胜感激。
为了说明我的意思,AudioSwift 应用程序的这个视频演示正是我想要的。macOS 本身也用这个来手写中文(虽然我不需要识别字符)。
在 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)