Клавиша Enter или Return

swift

#1

Написал приложение для изучения иностранного слов. Нужно водить в текст поле слова с клавиатуры. Сделал две кнопки; одна “проверить” проверяет слова на ==, вторая “далее” меняет слова. Все хорошо работает. Но хочу использовать только клавиатуру.

Подскажите пожалуйста, как сделать, чтобы клавиша enter была как кнопки “проверить” и “далее”? С помощи каких функций это можно реализовать? Или где посмотреть? Полезна любая информация.

Новичок.


#2

Тебе нужно использовать методы UITextFieldDelegate
и именно

func textFieldShouldReturn(_ textField: UITextField) -> Bool { }

внутри этого метода ты и определяешь какие действия нужно сделать!


#3

Получилось, но как-то не так. Получилось так, что один раз нажал enter, и проверка слова, и сразу меняет вопрос (слово). Вот бы если в два нажатия, к примеру один раз нажал на enter (проверил), второй раз нажал на enter (далее), т. е. новый вопрос.

В любом случае спасибо! В принципе направление ясно.


#4

Добавь вспомогательную переменную:

var helpVar = false

и при нажатии на кнопку проверяй:

if helpVar { 
    делаем нужную тебе проверку
    helpVar = true
} else {
   новый вопрос
}

#6

Не знаю как правильно вставить вот это

//--- Далее ---
    @IBOutlet var cardButton: UIButton!
    @IBAction func cardButtonHandler(_ sender: AnyObject) {
        Hide()
        cardButton.isEnabled = true
        if questionIdx < (scArray!).count - 1
        {
            questionIdx += 1
        }
        else
        {
            questionIdx = 0
        }
        nextQuestion()
        
    }

вставить сюда

//--- Вызывается, когда нажимается клавиша Return ---
    func textFieldShouldReturn(_ textField: UITextField) -> Bool
    {
        entereAnswer = textField.text
        cardButton.isEnabled = true

        checkForCorrectAnswer()
        
        return true
    }

#7

знаешь, очень трудно с таким форматированием понять как твой код работает!но, сделай две функции: проверки введенного текста, и переход на следующий вопрос! и вставь их в те места которые я написал!и все заработает как нужно


#8

Я вас понимаю, спасибо! Буду думать.


#9

отметьте что тема закрыта, если Ваш вопрос решен