2011-01-18 2 views
0

私はちょうど間違って使用していると確信していますが、私はNSTextFieldの属性付き文字列を、それ。ユーザーがテキストフィールドをクリックすると、最後のテキストが消え、テキストの編集が終了してテキストフィールドからフォーカスが削除されると、入力した文字列の最後にテキストが追加されます。NSTextFieldの処理キープレスの入力が妙に

ユーザーがタブをすぐにタップするか、ウィンドウのどこかをクリックしてテキストフィールドからフォーカスを削除しても問題ありません。それがうまくいかないのは、テキストボックスの "return"キーを押すだけです。この場合、テキストは文字列の最後に追加されますが、残りの文字列と同じフォントになります。

ここに私のコードの関連部分があります。私は両方のメソッドが同じシーケンスで呼び出されていることを確認しました。フィールドからタブを外して、フィールドにenterキーを押したときの両方です。

- (void) selectText:(id)sender 
{ 
    [titleText setStringValue: [NSString stringWithFormat:@"%@", userEditableText]]; 
} 

- (void) textDidEndEditing:(NSNotification *)notification 
{ 
    userEditableText = [textField stringValue]; 
    NSString* fullText = [NSString stringWithFormat:@"%@ (%@)", userEditableText, nonUserEditableText]; 

    NSRange range1; 
    range1.location = 0; 
    range1.length = [userEditableText length] - ([nonUserEditableText length] + 2); 
    NSRange range2; 
    range2.location = range1.length; 
    range2.length = ([[nonUserEditableText length] length] + 2); 
    NSRange range3; 
    range3.location = 0; 
    range3.length = [fullText length]; 

    NSFont *font = [NSFont fontWithName:@"Arial" size:14.0]; 

    NSMutableDictionary* stringAttributes = [[NSMutableDictionary alloc] init]; 
    NSMutableAttributedString *attrString = [[NSMutableAttributedString alloc] initWithString:fullText attributes:stringAttributes]; 

    NSMutableParagraphStyle *paragraphStyle = [[NSParagraphStyle defaultParagraphStyle] mutableCopy]; 
    [paragraphStyle setLineBreakMode:NSLineBreakByTruncatingMiddle]; 

    [attrString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:range1]; 
    [attrString addAttribute:NSFontAttributeName value:font range:range2]; 

    [textField setAttributedStringValue:attrString]; 
} 

答えて

0

私は何をしたのかよく分かりませんが、いくつかのクラスでコードの束を変更したところ、すべて正常に動作しています。私が何をしたのかが分かっていれば嬉しいです...