2012-02-20 2 views
0

Я пытаюсь использовать класс I, который переопределяет NSFormatter в приложении OS X. Я попробовал пример из книги, но это из старой версии XCode. Моя проблема в том, что я не знаю, как установить форматтер NSTextfield. Я не уверен, что теперь что-то изменилось, когда Xcoded имеет встроенный IB, или я делаю что-то еще неправильно. Похоже, вы использовали, чтобы иметь возможность контролировать щелчок по текстовому полю, и это вызовет меню. В разделе «Выходы» меню говорится, что я должен увидеть выбор «форматирования». Это не указано в разделе «Выходы» меню.Пользовательский NSFormatter для текстового поля в XCode 4

Я не думаю, что это имеет значение, но мое поле NSText находится в NSScrollview. Я все еще очень новичок в Cocoa (из C# и C++).

+0

Что вы пытаетесь ограничить NSFormatter в своем NSTextField? –

+0

Я просто пытаюсь ограничить количество символов, которые могут быть введены в поле nstext – JonF

ответ

1

Вы можете просто подкласс NSNumberFormatter так:

в .h

@interface NumberFormatterSubclass : NSNumberFormatter { 

} 

@end 

в .m

@implementation NumberFormatterSubclass 


- (BOOL)isPartialStringValid:(NSString **)partialString 
    proposedSelectedRange:(NSRangePointer)proposedSelRange 
      originalString:(NSString *)origString 
    originalSelectedRange:(NSRange)origSelRange 
     errorDescription:(NSString **)error 
{ 

    if ([*partialString length] > 4) { 
     return NO; 
    } 


    return YES; 
} 

Не забудьте добавить NSNumberFormatter на вашем NSTextField и изменить NSNumberFormatter класс Вашему созданному подклассу в инспектор по идентификации.

+0

Спасибо за предложение, но текстовое поле не ограничивается числами. Я нашел это решение для создания класса форматирования http://stackoverflow.com/questions/827014/how-to-limit-nstextfield-text-length-and-keep-it-always-upper-case. Я просто не могу найти, как связать nstextfield с любым форматированием. – JonF

+0

Это не ограничивающие числа. Это предельные буквы и цифры. Это ограничение на 4 символа букв или цифр. И вы можете связать форматировщик, перетащив его на NSTextField, а затем измените класс форматирования на ваш созданный подкласс в инспекторе идентификации, как я сказал в своем сообщении. Кроме того, если вам не нравится, как звучит «NSNumberFormatter», используйте «NSFormatter», тот же самый мой набранный код будет работать! –

+1

При подклассификации NSFormatter вы также должны реализовать методы: stringForObjectValue: и getObjectValue: forString: errorDescription: См. «Создание пользовательского форматирования» https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/DataFormatting /Articles/CreatingACustomFormatter.html#//apple_ref/doc/uid/20000196 – ctpenrose

Смежные вопросы