Создание политики конфиденциальности в Swift: как сделать кнопку действия UIAlertController отключенной, пока сообщение не будет прокручено вниз

В моем приложении iOS я пытаюсь реализовать простую политику конфиденциальности, используя UIAlertController. По закону политика должна быть прокручиваемой, прежде чем ее можно будет принять — как и большинство политик конфиденциальности в наши дни.

Из моего собственного исследования я увидел, что вы можете отключать и включать кнопки UIAlertAction, но я не знаю, как определить, когда тело сообщения UIAlertController было прокручено. Прокрутка до конца может быть требованием, и я заинтересован в том, чтобы выяснить, как это тоже сработает.

UIAlertController

Вот мой текущий код для стандартного вида UIAlertController выше.

let alertController = UIAlertController(title: "Privacy Policy", message: privacyPolicyString, preferredStyle: UIAlertControllerStyle.Alert)

let AcceptAction = UIAlertAction(title: "Accept", style: UIAlertActionStyle.Default, handler: {(action: UIAlertAction) -> Void in

    //perform next step in login verification
})

let DeclineAction = UIAlertAction(title: "Decline", style: UIAlertActionStyle.Default, handler: {(action: UIAlertAction) -> Void in

    //User has declined privacy policy. The view resets to standard login state
})

alertController.addAction(AcceptAction)
alertController.addAction(DeclineAction)

self.presentViewController(alertController, animated: true, completion: nil)

person Danoram    schedule 09.08.2016    source источник
comment
вам нужно создать собственное представление предупреждений для этого, чтобы у вас был доступ к смещению этого представления и возможность отключить или включить кнопку   -  person Lu_    schedule 09.08.2016


Ответы (1)


Это может быть возможно с помощью собственного UIAlertController следующим образом:

  1. Создать переменную типа UIAlertAction
  2. Установите enabled на ложь
  3. Когда вы прокручиваете вниз, вы можете проверить это в делегате прокрутки или любым другим способом, а затем установить enabled в true
  4. Самое главное в приведенном ниже коде: -

    self.actionToEnable = action
    action.enabled = false
    

Ссылка на код: -

weak var actionToEnable : UIAlertAction?

func callbackWhenScrollToBottom(sender:UIScrollView) {
    self.actionToEnable?.enabled = true
}

       let alert = UIAlertController(title: "Title", message: "Long text here", preferredStyle: UIAlertControllerStyle.Alert)
        let cancel = UIAlertAction(title: "Accept", style: UIAlertActionStyle.Cancel, handler: { (_) -> Void in

        })

        let action = UIAlertAction(title: "Decline", style: UIAlertActionStyle.Default, handler: { (_) -> Void in

        })

        alert.addAction(cancel)
        alert.addAction(action)

        self.actionToEnable = action
        action.enabled = false
        self.presentViewController(alert, animated: true, completion: nil)
person pkc456    schedule 09.08.2016
comment
Это хорошее начало! Можете ли вы дать некоторое представление о том, как найти смещение прокрутки предупреждения в обратном вызове? И где бы я назвал эту функцию? - person Danoram; 12.08.2016
comment
Я проверил иерархию UIAlertController, но не смог найти прокрутку, текстовое представление. Таким образом, невозможно получить смещение прокрутки. Вы нашли какое-нибудь решение. - person pkc456; 19.08.2016
comment
Нет пока, к сожалению. Я все еще изучаю это! - person Danoram; 20.08.2016