我需要为TextFields设置一个字符限制。我遵循了这个answer,我能够设定一个限制。但现在当我按下输入时,所有字符都被删除了。出了什么问题?
- (BOOL)isPartialStringValid:(NSString *__autoreleasing *)partialStringPtr
proposedSelectedRange:(NSRangePointer)proposedSelRangePtr
originalString:(NSString *)origString
originalSelectedRange:(NSRange)origSelRange
errorDescription:(NSString *__autoreleasing *)error {
if ([*partialStringPtr length] > maxLength)
return NO;
else
return YES;
}
- (NSString *)stringForObjectValue:(id)obj {
return (NSString*) obj;
}
- (BOOL)getObjectValue:(out __autoreleasing id *)obj
forString:(NSString *)string
errorDescription:(out NSString *__autoreleasing *)error {
return YES;
}
- (NSAttributedString *)attributedStringForObjectValue:(id)obj
withDefaultAttributes:(NSDictionary *)attrs {
return (NSAttributedString*) obj;
}
答案 0 :(得分:4)
如何将自己设置为NSTextField的委托实现此委托方法?
- (void)textDidChange:(NSNotification *)aNotification
在那里你可以检查文字是否太长然后在这种情况下剪掉它。
NSTextField *textField = (NSTextField *)[aNotification object];
if ([textField.stringValue length] > maxLength)
{
textField.stringValue = [textField.stringValue substringWithRange:NSMakeRange(0,maxLength)];
}
答案 1 :(得分:0)
Swift 4
extension NSTextField{
func controlTextDidChange(obj: NSNotification){}
}
override func controlTextDidChange(_ obj: Notification)
{
let object = obj.object as! NSTextField
if object.stringValue.count > 10{
object.stringValue = String(object.stringValue.dropLast())
}
}