禁用选项 - 在NSTextField中输入换行符?

问题描述:

我想禁止在我的NSTextField中输入换行符,默认情况下可以通过键入Option-Enter(或Option-Return)来输入换行符。禁用选项 - 在NSTextField中输入换行符?

虽然我发现somepages解释如何允许换行符,而无需使用选项修改,我不能为完全禁用换行符发现任何东西。

这怎么办?

您可以创建NSFormatter的子类并实现isPartialStringValid:...方法来阻止换行符。

- (BOOL)isPartialStringValid:(NSString **)partialStringPtr 
     proposedSelectedRange:(NSRangePointer)proposedSelRangePtr 
       originalString:(NSString *)origString 
     originalSelectedRange:(NSRange)origSelRange 
      errorDescription:(NSString **)error 
{ 
    // the user may have: 
    // -- deleted the left most character 
    // -- deleted the last character and we have an empty string 
    // both cases are valid 
    if (proposedSelRangePtr->location == 0) 
     return YES; 

    unichar theChar = [*partialStringPtr characterAtIndex:proposedSelRangePtr->location - 1]; 

    if ([[NSCharacterSet newlineCharacterSet] characterIsMember:theChar]) { 
     *error = nil; 
     NSBeep(); 
     return NO; 
    } 

    return YES; 
} 
+0

唷,它看起来好像是禁用输入换行符令人惊讶的麻烦!我会尽力解决您的问题,谢谢! – 2009-02-26 14:15:43

请问为什么要禁用此功能?这是操作系统非常标准的一部分。请记住,用户可能会从包含换行符的其他字符串中粘贴一些字符串,然后他们会根据需要进行编辑。将这个功能保持原样也许会更好一些,但是当需要将视图中的值复制到模型中时,使用NSFormatter去除换行符后面的所有内容?