SwiftUI for macOS中onKeyPress无法响应箭头按键问题求助
解决SwiftUI中onKeyPress响应箭头按键无效且出现macOS提示音的问题
问题原因
macOS中,只有获得键盘焦点的视图才能接收按键事件。你的代码里的VStack默认不具备焦点能力,按下箭头键时没有视图能响应这个事件,系统就会发出提示音表示操作无效。
解决方案
方案1:让视图可获取焦点
给VStack添加.focusable()修饰符,用户点击视图后,视图就能获得焦点并响应按键:
struct ContentView: View { var body: some View { VStack { Text("Hello, press arrow up!") } .focusable() .onKeyPress(.upArrow) { print("I am here") return .handled } } }
方案2:自动获取焦点
如果希望视图加载后无需用户点击就能直接响应按键,可以结合FocusState让视图自动获取焦点:
struct ContentView: View { @FocusState private var isViewFocused: Bool var body: some View { VStack { Text("Hello, press arrow up!") } .focusable() .focused($isViewFocused) .onAppear { isViewFocused = true } .onKeyPress(.upArrow) { print("I am here") return .handled } } }
修改后,按下上箭头键就能正常触发print逻辑,也不会再出现系统提示音。
内容的提问来源于stack exchange,提问作者Lupurus
相关产品推荐
相关产品推荐

