Подтвердить что ты не робот

В чем разница, если я верну "ДА" или "НЕТ", когда я вызову textFieldShouldReturn

Это метод делегата текстового поля, но у меня есть сомнения относительно типа возврата

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
  [textField resignFirstResponder];

   return NO;
}  

и это тот же метод с другим возвращаемым типом

-(BOOL)textFieldShouldReturn:(UITextField *)textField
 {
   [textField resignFirstResponder];

   return YES;
 }

и мы можем скрыть клавиатуру в телефоне. но в чем смысл возвращаемого типа "ДА" или "НЕТ". Я не вижу никакой разницы.

4b9b3361

Ответ 1

TextFieldShouldReturn - это место, где вы можете обрабатывать кнопку возврата на клавиатуре.

textFieldShouldReturn запрашивает делегат, если текстовое поле должно обработать нажатие кнопки возврата.

Если вы реализуете свой собственный код для обработки кнопки возврата, вы должны вернуть НЕТ или вернуть ДА, чтобы он обрабатывался по умолчанию.

В документах IOS указано: Текстовое поле вызывает этот метод, когда пользователь нажимает кнопку возврата. Вы можете использовать этот метод для реализации любого пользовательского поведения при нажатии кнопки.

http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UITextFieldDelegate_Protocol/UITextFieldDelegate/UITextFieldDelegate.html

Ответ 2

В дополнение к другим ответам здесь (которые, по существу, не подтверждают существенной разницы, нет автоматического списания первого ответчика, возвращая YES и т.д.), я обнаружил странное появление , полностью зависящее от возвращаемое значение, в частности, для UITextField с автокоррекцией.

Предположим следующее:

  • У вас есть UITextField с включенной автокоррекции

  • Вы применили метод делегата примерно так (где текстовое поле сбрасывается):

    - (BOOL)textFieldShouldReturn:(UITextField *)textField 
    {
        if (textField == self.myAutocorrectingTextField) {
            [self.myAutocorrectingTextField resignFirstResponder];
        }
        return YES; 
    }
    
  • Запустите приложение, введите "Кабель" в текстовое поле, затем нажмите клавишу возврата, отложив его как первый ответчик.

Результат при возврате YES:

  • Текст текстового поля будет изменен с "Кабель" на "Кабели"!

Я опробовал несколько других слов, которые отвечают аналогично:

  • "Stuff" изменено на "Stuffs"
  • "Десять" до "Десяти"
  • И один раз "Автомобиль" изменился на "Карл", в другой раз "Автомобиль" изменился на "Карп"

Результат при возврате NO:

Normal. Текст текстового поля не будет изменен.

В резюме...

При возврате YES текстовое поле может автокорректировать уже правильные слова. Однако он не представляет собой один из этих "автокорректных текстовых пузырьков", потому что это законные слова.

При возврате NO текстовое поле не будет автокорректировать уже правильные слова.

Примечание: В обоих случаях неправильные слова всегда будут исправлены. Например:

  • Если вы наберете "Wev", "текст автокоррекции" должен появиться с текстом "Web". Если вы нажмете клавишу Return, независимо от возвращаемого значения делегата, текст будет заменен на исправление.

Ответ 3

Одно из различий, которое я вижу на основе личного опыта, заключается в том, что если вы вернете ДА, автоматическая коррекция и автоматическая капитализация будут вызваны, если вы вернете НЕТ, это не так. Могут быть другие дела, но все, что я мог заметить до сих пор.

То, что они подразумевают под "поведением по умолчанию".