Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cocoa NSTextField处理Enter键异常按下_Cocoa_Nstextfield - Fatal编程技术网

Cocoa NSTextField处理Enter键异常按下

Cocoa NSTextField处理Enter键异常按下,cocoa,nstextfield,Cocoa,Nstextfield,我肯定我只是用错了,但我现在做的是,我有一个NSTextField,它有一个属性字符串,末尾有几个不同字体的文本字符。当用户单击文本字段时,末尾的文本应消失,当用户完成编辑文本并从文本字段中移除焦点时,文本将添加回他们输入的字符串的末尾 当用户从框中弹出标签,或单击窗口上的某个位置以从文本字段中移除焦点时,它工作正常。只有当他们点击文本框中的“return”键时,它才会不起作用。在本例中,文本仍然会添加到字符串的末尾,但它的字体与字符串的其余部分相同 下面是我代码的相关部分。我已经验证了当我从一

我肯定我只是用错了,但我现在做的是,我有一个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];
}

不确定我到底做了什么,但我在几个类中改变了一堆代码,现在一切都正常工作了。但愿我知道我做了什么