Программирование кнопки iOS для выполнения действий при первом нажатии, а затем при втором нажатии - PullRequest
0 голосов
/ 03 сентября 2018

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

Когда пользователь нажимает кнопку включения клавиатуры в приложении, я вызываю IBAction, чтобы связать его с приложением настроек следующим образом:

@IBAction func enableKeyboard(_ sender: Any) {
        let settingsUrl = URL(string: "\(UIApplicationOpenSettingsURLString)")!
        UIApplication.shared.open(settingsUrl)
    }

Однако у меня одновременно есть переход к моему textViewController, поэтому, когда пользователь возвращается в приложение из настроек, он сразу же переходит к textViewController.

enter image description here

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

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Вы можете добавить некоторое состояние в ваш контроллер. Это будет полезно не только для двух состояний («открыть настройки» и «открыть следующий вид»), вы сможете управлять несколькими состояниями.

Вы можете добавить переменную состояния в свой контроллер:

enum ControllerState {
    case needSettings, needNext
}
private var state: ControllerState = .needSettings

@IBAction func yourButtonHandler(sender: UIButton) {
    switch state {
    case .needSettings:
        state = .needNext
        // Open settings
    case .needNext:
        // Open next view controller
    }
}
0 голосов
/ 03 сентября 2018

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

@IBAction func touchUpInside(button: UIButton) {
    if !button.isSelected {
        button.isSelected = true
        // Now open settings
    } else {
       // Perform segue
    }
}

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...