2015-12-01 59 views
2

我正在創建一個NSTextView,我想在NSTextView爲空時更改插入點的大小。NSTextView更改插入點(插入符號)當沒有字符串時光標大小

看來,插入符號光標(IBEAM/IBEAM光標)大小是基於關閉所述NSTextViewattributedString屬性的當前字體大小屬性的。

問題是因爲NSTextView有一個空的attributedString,字符串上可能沒有任何屬性。這意味着我無法應用字體大小。

不過,我可以改變typingAttributes有fontSize的是correct--但直到我開始輸入

看到這些截圖插入光標不更新尺寸: 注意這裏右側的TextView有小插入點光標:
enter image description here

我開始打字,它在尺寸更新:
enter image description here

所以,我的曲請注意,是否有一個屬性需要在初始化時設置爲NSTextView,以便獲得初始插入點光標的正確大小? (我希望它匹配typingAttributes字體)

編輯: @馬克貝西帶來了良好的question--什麼順序我設置了打字屬性:

[_textEditor setTypingAttributes:typingAttributes]; 
    [_textEditor setDelegate:self]; 

    [view addSubview:_textEditor]; 
    [self updateInsertionPointColor]; 

    [[view window] makeFirstResponder:_textEditor]; 
    [view setNeedsDisplay:YES]; 

回答

0

這樣做的作品在一個簡單的測試程序,在我的applicationDidFinishLaunching方法:

NSFont *font = [NSFont fontWithName:@"Marker Felt" size:24.0]; 
NSDictionary *attr = @{ 
         NSFontAttributeName: font 
         }; 
[self.textView setTypingAttributes:attr]; 

我得到我所期待的大I型光標。

這與TextEdit的功能基本相同(示例代碼爲here),因此就設置typingAttributes而言,它看起來不像是在做任何錯誤。

我想知道是否您可能在錯誤的時間設置了屬性。你什麼時候設置typingAttributes?屏幕上是否顯示視圖?它是第一響應者嗎?

+0

感謝您的回覆,我很欣賞您製作了一個測試應用程序(我應該自己做這件事來確認)。我使用顯示操作順序的相關代碼編輯了我的問題 –