簡體   English   中英

如何處理NSTextField子類的第一響應者狀態?

[英]How to handle first responder status for NSTextField subclass?

我正在開發一個需要特殊文本字段來編輯字節值的項目。 我目前的解決方案是一個專用的只讀文本字段和一個“...”按鈕來打開一個彈出窗口,如下圖所示:

當前的解決方案,popover

現在我嘗試讓我的解決方案更加用戶友好。 我的目標是這些:

  • 如果文本字段獲得第一個響應者狀態,則彈出窗口將自動打開。
  • 選擇完整的文本。
  • 如果用戶使用制表符離開文本字段或選擇彈出窗口外的任何字段,則彈出窗口應自動關閉。
  • 如果用戶鍵入任何有效數字和后綴,則更新字節值(例如“10 GB”)

目前我有點無能為力。 我的問題是這些:

  • 當文本字段獲得第一響應者時,在子類中檢測到的最佳位置在哪里?
  • 如何檢測該字段何時作為第一響應者?
  • 還有其他更簡單的解決方案嗎?

我可以使用- (BOOL)becomeFirstResponder作為鈎子來實現一切,以顯示彈出窗口並觀察第一個響應者以自動隱藏彈出窗口:

- (void)viewDidMoveToWindow
{
    [super viewDidMoveToWindow];
    [self.window addObserver:self forKeyPath:NSStringFromSelector(@selector(firstResponder)) options:0 context:NULL];
}

作為一個起點,我發布了一個關於GitHub上的類的工作項目(麻省理工學院許可證):

關於GitHub的項目

暫無
暫無

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

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