禁用选项 - 在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;
}
答
请问为什么要禁用此功能?这是操作系统非常标准的一部分。请记住,用户可能会从包含换行符的其他字符串中粘贴一些字符串,然后他们会根据需要进行编辑。将这个功能保持原样也许会更好一些,但是当需要将视图中的值复制到模型中时,使用NSFormatter去除换行符后面的所有内容?
唷,它看起来好像是禁用输入换行符令人惊讶的麻烦!我会尽力解决您的问题,谢谢! – 2009-02-26 14:15:43