在此更改之前,macOS 12 將 TextField 設定為啟動時的第一回應者幾秒鐘。
嘗試呼叫主應用的onAppear、didFinishLaunching、willFinishLaunching、init()下面的方法
NSApp.keyWindow?.makeFirstResponder(nil)
NSApp.keyWindow?.resignFirstResponder()
在應用程式自動移除焦點之前,會有幾秒鐘的短暫延遲。
如何防止這種行為?我有一些在 TextField 聚焦時觸發的影片。
我正在使用
enum Focus { case some, none }
@FocusState var focus : Focus
我觀察到在啟動時焦點設定為一些,然后設定為 nil
uj5u.com熱心網友回復:
這看起來確實像一個錯誤(如果需要,請向 Apple 提交反饋)。
找到的解決方法是禁用啟動時的臨時控制(禁用TextField
無法獲得焦點)并在下一個事件周期中重新啟用它。
使用 Xcode 13.3 / macOS 12.2 測驗
這是主要部分:
TextField("", text: $txt)
.disabled(disabled) // << here !!
.onAppear {
DispatchQueue.main.async { disabled = false } // << here !!
}
專案中的完整代碼在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/470509.html