禁用的选项输线中断NSTextField?
-
06-09-2019 - |
解决方案
您可以创建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线突破后剥离出来的一切,当是时间值缩小视图复制到模型?
不隶属于 StackOverflow