簡體   English   中英

如何在Swift中為NSTextView設置第一響應者?

[英]How to set first responder for NSTextView in Swift?

編輯:在macOS項目中

我有一個簡單的ViewController,它在狀態項菜單應用程序上顯示為彈出框。

我使用NSTableView更改視圖文本的文本,具體取決於單擊的項目。 我使用的代碼與此類似:

mainTextField.insertText(newStr, replacementRange: theRange)

(我使用insertText的目的是將更改記錄在撤消管理器中)

然后我突出顯示文本:

// create the new NSRange
let range = NSRange(location: startRange, length: newStrLength)

// select the range in field
mainTextField.selectedRange = range

所有操作均正常,但突出顯示了文本,但使用了淺灰色而不是通常的天藍色,表明該控件不是第一響應者。 當我單擊該字段時,選擇消失。

實際上,我希望NSTextView成為第一響應者,因此我可以直接復制所選文本。

編輯:如果我按鍵盤上的Tab鍵,我將使textView成為第一響應者(灰色選擇變為標准的天藍色)。

正確答案

在AppKit中,您需要:

if mainTextField.acceptsFirstResponder {
    mainTextField.window?.makeFirstResponder(mainTextField)
}

在這種情況下,不檢查acceptsFirstResponder可能是安全的,但也不會造成傷害。

原始答案( UIKit

您需要調用mainTextField.becomeFirstResponder()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM