我的應用程式的作業方式與 Spotlight 類似。激活應用程式后,我會截取箭頭等鍵并回傳以執行一些操作并瀏覽建議串列。當用戶點擊回傳按鈕時,我假設串列中的選定專案已被選中。
不幸的是,當用戶使用日文、韓文或中文鍵盤時,候選視窗使用相同的鍵。因此,我有沖突。
我需要區分用戶當前是在與候選視窗還是與我的應用程式互動。因此,我想知道是否有任何方法可以檢測到候選視窗是否顯示?
uj5u.com熱心網友回復:
NSInputClient.hasMarkedText回傳是否有任何標記文本,即等待轉換為候選視窗中的選項之一的文本,或者用戶可以選擇標記文本本身。
標記文本是候選視窗出現的必要條件,但不是充分條件,并且為了防止意外的用戶輸入與您的應用程式互動,我認為檢測標記文本的存在就足夠了,甚至更好的用戶體驗,作為一個每天輸入中文和日文的人。當螢屏上有標記文本時,我不希望我能夠與文本以外的任何其他內容進行互動。
您可以通過獲取文本視圖的欄位編輯器(即 a )來呼叫hasMarkedTexta (歸功于此答案):NSTextFieldNSTextView
if let editor = textField.window?.fieldEditor(false, for: textField) as? NSTextView,
editor.hasMarkedText() {
// has marked text
} else {
// no marked text
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/507411.html
上一篇:本地主機顯示“索引”頁面
下一篇:匯入psycopg2時如何解決“NameError:name'basestring'isnotdefined”?
