Проверьте десятичные значения max / min в NSTextField - PullRequest
0 голосов
/ 31 августа 2010

Прежде всего я должен сделать это без IB и без передовых методов Objective-C, таких как KVO.

Моя проблема связана с тем простым фактом, что я не могу найти способ получить полностью новое строковое значение текстового поля.

Я пробовал использовать функцию делегата:

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString

но это не дает мне только строку замены, а не полную строку, которая мне нужна для проверки. Я могу позже использовать текст

Я нашел

- (void)textDidChange:(NSNotification *)aNotification 
- (void)controlTextDidChange:(NSNotification *)aNotification

но когда я получаю эти звонки, уже слишком поздно, и последнее содержимое текстового поля уже пропало. Так каков наилучший способ справиться с этим?

И да, я прочитал связывание NSTextField с NSNumber , но это не дает мне понятия, как решить мою проблему.

Все, что мне нужно, это простая функция тестирования "- (BOOL) acceptNewValue (NSString string)". Почему все так сложно с какао, оно начинает ощущаться как MFC.

1 Ответ

3 голосов
/ 31 августа 2010

Я пробовал использовать функцию делегата:

Вы имеете в виду реализацию метода. Использование его будет означать его вызов, что является задачей NSTextView, и это метод Objective-C, а не функция C.

- (BOOL)textView:(NSTextView *)aTextView shouldChangeTextInRange:(NSRange)affectedCharRange replacementString:(NSString *)replacementString

но это не дает мне только строку замены, а не полную строку, необходимую для проверки.

Кроме этого: вы можете запросить текстовое представление для предыдущей полной строки , применить изменение к изменяемой копии этой строки, а затем проверить полученную строку. Вернуть NO, если изменение приведет к неверному вводу.

...