2010-08-27 65 views
1

我有一個使用NSTextField實例進行就地文本編輯的圖形應用程序,此功能很久以前就已添加,我從來沒有理由檢查它,但是,最近我收到了一個報告:文本文件不允許文本格式。格式 - >文本菜單子項目全部禁用,因此無法設置文本項目的段落。NSTextField中的文本格式

問題:我應該如何設置NSTextField以支持段落編輯?我確信它確實有效,因爲我有一些帶格式文本的項目,而NSTextField在應用程序誕生後就已經存在了。我錯過了系統/ XCode更新的內容嗎?

我的NSTextField是多行,可編輯的,允許編輯文本屬性。

回答

3

如果有人將面臨這在將來,我可以詳細說明問題:

  1. NSTextView拒絕應用格式,如果沒有使用直尺(與最近的OS更新,我想)
  2. NSTextField本身不進行文本編輯,它使用由擁有的NSWindow驅動的共享NSTextView實例。NSWindow默認的文本編輯器不使用標尺。

此結果在使用NSTextField時禁用了文本格式。

解決方案是繼承NSWindow:

@implementation MyWindow 

- (NSText *)fieldEditor:(BOOL)createWhenNeeded forObject:(id)anObject 
{ 
    NSText* text = [super fieldEditor:createWhenNeeded forObject:anObject]; 
    if ([text isKindOfClass:[NSTextView class]]) 
     [(NSTextView *)text setUsesRuler:YES]; 
    return text; 
} 

@end 

瞧,格式化又回來了。