2011-11-03 75 views
4

我有一個.xib文件中的自定義視圖,我使用contentViewControllerMAAttachedWindow。該視圖中有幾個NSTextField s。消失NSTextField文本

當我第一次打開MAAttachedWindow時,一切都很好。文本顯示在所有相關文本字段中。然後,如果我關閉窗口(將其設置爲nil),然後再次調用它(使用與contentViewController相同的自定義視圖重新初始化),則最後的firstResponder文本字段現在爲空。

奇怪的是,如果我點擊「空白」文本字段,它會顯示正確的文本。只要此文本字段具有焦點,就可以對其進行編輯,並且行爲恰當。只要其他東西變成firstResponder,文字就會再次消失。

更新

  • 更改顏色沒有改變上述行爲。
  • 在此過程中,文字顏色不會隨時更改。
  • 佔位符文本也受上述行爲。
  • 此過程中的任何時間都不會發生錯誤。
  • 這不會發生在NSSecureTextField s。

回答

2

我明白了!

在關閉(並隨後釋放)MAAttachedWindow之前,我只需要明確地從其superview中刪除viewController

2

嘗試將文本字段文本的顏色更改爲紅色(或任何其他顏色),您可能會收到此處發生的情況。

+0

不好。查看我的問題中的更新。 –

0

嘗試在將窗口設置爲零之前先退出所有第一響應者。

+0

我以爲肯定這個工作,但沒有好處。看起來它可能不是'firstResponder'問題,而是一個文本問題。 –

4

我第一次遇到這個問題about 5 years ago與NSSavePanel的附件視圖。 我找到的解決方案是在關閉之前將第一響應者移動到面板本身。這是我確切的方法:

- (void)windowDidEndSheet:(NSNotification *)notification 

    NSSavePanel *savePanel = [(XSDocument *)[self document] savePanel]; 
    if (!savePanel) 
     return; 
    // this fixes a bug where on next opening one of accessory view's text field will be blank and behave strangely 
    [savePanel makeFirstResponder:savePanel]; 
} 
+0

謝謝!多煩人的錯誤。 – FogleBird