2016-08-12 59 views
1

當選擇可編輯的NSTextField時,Cocoa通過在文本字段周圍製作藍色矩形將其標記爲默認值。如何刪除NSTextField在編輯完成時選擇的指示器

但是,編輯結束後,除非選擇了另一個文本字段,否則指示器無法刪除。

要刪除選擇指標,我們應該怎麼做?

我們使用以下函數來檢測編輯的結束。

override func controlTextDidEndEditing(notification: NSNotification) { 

    // doing things like getting the string user has been made. 

    } 
+0

即使我想** anotherTextField.becomeFirstResponder()**,** ** textField.resignFirstResponder什麼也沒有改變。 – Hope

+1

爲什麼不簡單地將窗口的第一響應者設置爲取消選擇文本字段的'nil'? – vadian

回答

2

NSTextField默認情況下繪製聚焦環顯示活動狀態。如果你想刪除它,你可以將t設置爲無。

override func controlTextDidEndEditing(_ obj: Notification) { 
    textField.focusRingType = .none 
} 

注意NSTextField仍然是第一個響應,如果用戶再次開始打字,對焦環不會變成藍色。這是因爲你已經通過編程改變了它。爲了恢復它,你需要自己做。

+0

通過此功能刪除矩形(環形),但用戶輸入的字符串仍以藍色背景色標記。 – Hope

+1

嘗試'NSApp.mainWindow?.makeFirstResponder(self)'而不是'textField.focusRingType = .none' – Khundragpan

+0

是的,這已成功。但是爲什麼在新的字符串輸入後通常不會被刪除。我認爲這是一個錯誤。 – Hope

0

試試這個

textField.window?.makeFirstResponder(self)

+0

什麼是「自我」?爲什麼不'nil'或'textField.window'? –

+0

自己是視圖控制器。 – avvensis

+0

你有什麼理由相信視圖控制器接受第一響應者?查看[makeFirstResponder()']的文檔(https://developer.apple.com/reference/appkit/nswindow/1419366-makefirstresponder)。 –

相關問題