Я новичок в Objective-C. Я создал текстовое представление в коде, которое ограничивает его текст до 25 символов. Когда пользователь хочет добавить более 25 символов в текстовое представление, он показывает представление предупреждения... Теперь проблема в том, что когда я нажимаю кнопку "Готово", он снова показывает представление предупреждения. Может ли кто-нибудь сказать мне, как это решить?

0
Harita 1 Июл 2009 в 11:02
Это не ответ, но появление диалогового окна с предупреждением в этой ситуации звучит очень раздражающе.
 – 
Chuck
1 Июл 2009 в 11:12
Я выдаю предупреждение View, чтобы сообщить пользователю d не вводить более 25 символов
 – 
Harita
1 Июл 2009 в 13:14
1
Да, это действительно раздражающий способ сказать пользователю не вводить более 25 символов. Более дружелюбным подходом было бы дать полю метку, объясняющую ограничение в 25 символов, а затем, когда пользователь достигает 25 символов, просто дать NSBeep() и не принимать ввод. Пользователь разберется, и его рабочий процесс не будет прерван.
 – 
Chuck
1 Июл 2009 в 18:39
1
Мне нравится стратегия, используемая большинством клиентов Twitter, позволяющая пользователю вводить более n символов, но не «отправлять» данные, если они превышают лимит. Счетчик где-то сообщает вам, сколько символов вы набрали, и не превысили ли вы лимит. Таким образом, вы можете вывести свои мысли из головы в текстовое поле и пересматривать их, пока не получите действительную запись.
 – 
Marc Charbonneau
1 Июл 2009 в 20:36
1
@kent: 100% ДА. Почти все, кроме разжигания огня, более дружелюбно, чем модальный диалог. Разница между звуковым сигналом и предупреждением заключается в том, что людям не нужно нажимать на звуковой сигнал, чтобы он исчез, прежде чем они смогут снова начать работать. Люди ненавидят, когда их рабочий процесс без необходимости прерывается. Звуковой сигнал, когда пользователь пытается выполнить ввод, а это не разрешено, является стандартным поведением на Mac. Модальное диалоговое окно должно отображаться только тогда, когда произошло что-то действительно срочное или для продолжения требуется ввод данных пользователем.
 – 
Chuck
1 Июл 2009 в 21:44

2 ответа

Я думаю, что должен согласиться со всеми предыдущими пользователями, что этот тип предупреждения может быть довольно раздражающим для пользователя. Даже если вы измените свой способ на что-то менее навязчивое, вам все равно нужно будет подтвердить ввод.

Я думаю, что правильным способом было бы использовать функции форматирования данных Cocoa. Дополнительную информацию об этом можно найти по адресу: isPartialStringValid:newEditingString:errorDescription:.

Как вы можете прочитать там, вы можете вернуть NO, и последний вставленный символ не будет добавлен. С делегатом управления control:didFailToValidatePartialString:errorDescription: можно даже использовать поведение Mac OS по умолчанию для таких случаев, которое может измениться в будущем.

2
Tobias Tom 2 Июл 2009 в 04:12

Во-первых, оповещение — это, пожалуй, самая примитивная, неэлегантная и недружественная форма взаимодействия с пользователем, к которой может обратиться программист. вы должны обратиться к оповещениям в крайнем случае.

Хотя вопрос немного расплывчатый, мне кажется, что ваша логика такова

while(strlen(textview) > 25)
{
 // show alert
}

Так что, конечно, когда вы показываете предупреждение, вам нужно урезать длину строки, чтобы она была меньше 25, не так ли? иначе у вас будет действительно скучная игра под названием «Нажми и убери бесконечное оповещение!»

Более элегантным решением было бы отображать количество введенных символов, а когда оно приближается к пределу (скажем, более 20), затем сделать указанный дисплей красным и вместо отображения предупреждения просто запретить дальнейший ввод после 25-го символа (ИСКЛЮЧАЯ, КОНЕЧНО, BACKSPACE и DELETE!)

2
Jason Plank 21 Ноя 2011 в 17:54
Жвачка подскажите код ограничения ввода после 25-го символа кроме удаления пробела
 – 
Harita
2 Июл 2009 в 13:26