Я новичок в Objective-C. Я создал текстовое представление в коде, которое ограничивает его текст до 25 символов. Когда пользователь хочет добавить более 25 символов в текстовое представление, он показывает представление предупреждения... Теперь проблема в том, что когда я нажимаю кнопку "Готово", он снова показывает представление предупреждения. Может ли кто-нибудь сказать мне, как это решить?
2 ответа
Я думаю, что должен согласиться со всеми предыдущими пользователями, что этот тип предупреждения может быть довольно раздражающим для пользователя. Даже если вы измените свой способ на что-то менее навязчивое, вам все равно нужно будет подтвердить ввод.
Я думаю, что правильным способом было бы использовать функции форматирования данных Cocoa. Дополнительную информацию об этом можно найти по адресу: isPartialStringValid:newEditingString:errorDescription:.
Как вы можете прочитать там, вы можете вернуть NO
, и последний вставленный символ не будет добавлен. С делегатом управления control:didFailToValidatePartialString:errorDescription: можно даже использовать поведение Mac OS по умолчанию для таких случаев, которое может измениться в будущем.
Во-первых, оповещение — это, пожалуй, самая примитивная, неэлегантная и недружественная форма взаимодействия с пользователем, к которой может обратиться программист. вы должны обратиться к оповещениям в крайнем случае.
Хотя вопрос немного расплывчатый, мне кажется, что ваша логика такова
while(strlen(textview) > 25)
{
// show alert
}
Так что, конечно, когда вы показываете предупреждение, вам нужно урезать длину строки, чтобы она была меньше 25, не так ли? иначе у вас будет действительно скучная игра под названием «Нажми и убери бесконечное оповещение!»
Более элегантным решением было бы отображать количество введенных символов, а когда оно приближается к пределу (скажем, более 20), затем сделать указанный дисплей красным и вместо отображения предупреждения просто запретить дальнейший ввод после 25-го символа (ИСКЛЮЧАЯ, КОНЕЧНО, BACKSPACE и DELETE!)
Похожие вопросы
Новые вопросы
objective-c
Этот тег следует использовать только для вопросов, касающихся функций Objective-C или зависящих от кода на языке. Теги [cocoa] и [cocoa-touch] следует использовать, чтобы узнать о фреймворках или классах Apple. Используйте связанные теги [ios], [macos], [apple-watch] и [tvos] для проблем, характерных для этих платформ.