2014-02-26 126 views
1

我需要爲TextFields設置字符限制。我跟着這個answer,我能夠設置一個限制。但現在當我按下輸入時,所有的字符都被清除了。什麼地方出了錯 ?將限制設置爲NSTextField

- (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; 
} 

回答

4

如何設置自己作爲NSTextField的委託實現此委託方法?

- (void)textDidChange:(NSNotification *)aNotification 

在那裏您可以檢查文本是否過長,然後在這種情況下將其剪切。

NSTextField *textField = (NSTextField *)[aNotification object]; 
if ([textField.stringValue length] > maxLength) 
{ 
    textField.stringValue = [textField.stringValue substringWithRange:NSMakeRange(0,maxLength)]; 
} 
+0

是結束了使用'controlTextDidChange'但是熱衷於使用NSFormatter類,而不是我認爲正確的事情。 – user88975

+0

檢查此線程爲NSFormatter (http://stackoverflow.com/questions/827014/how-to-limit-nstextfield-text-length-and-keep-it-always-upper-case) –