У меня есть простой Родительский шлюз для игры, удобной для детей, с использованием UIAlertController .
Когда пользователь отвечает на вопрос неправильно - Я НЕ хочу, чтобы представление предупреждения отображаломеня уволили, в данный момент у меня вибрирует устройство и трясется экран, но я не могу получить представление с предупреждением, чтобы остаться на экране.
Ответы предоставлены в Obj-C или включают отключение кнопки , которая, очевидно, не будет работать, а другие ответы не работают - поэтому я надеялсябудет обновленный ответ.
func parentGate () {
var val1 = [1,2,3,4]
var val2 = [5,6,7,8]
let valIndex1 = Int(arc4random_uniform(UInt32(val1.count-1)))
let valIndex2 = Int(arc4random_uniform(UInt32(val2.count-1)))
accessAnswer = val1[valIndex1]+val2[valIndex2]
let alertController = UIAlertController (title: "Parental Control", message: "This section is for Parents only, \nplease answer the question below: \nWhat is \(val1[valIndex1]) + \(val2[valIndex2])?", preferredStyle: .alert)
let testAnswer = UIAlertAction(title: "OK", style: .default, handler: answerHandler)
let cancelAnswer = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
alertController.addTextField(configurationHandler: answerTextFieldResult)
alertController.addAction(testAnswer)
alertController.addAction(cancelAnswer)
self.present(alertController, animated: true, completion: nil)
}
, а затем обработчик testAnswer будет выглядеть так:
func answerHandler (alert: UIAlertAction) {
guard let suppliedAnswer = answerTextField?.text,
let answer = Int(suppliedAnswer) else {
return
}
if answer == accessAnswer {
print ("Good")
} else {
print ("Bad")
AudioServicesPlayAlertSound(SystemSoundID(kSystemSoundID_Vibrate))
self.view.shake(count: 3, for: 0.3, withTranslation: 3)
}
}
Если вы хотите увидеть, как выглядит обработчик textField на данный момент:
func answerTextFieldResult(textfield: UITextField) {
answerTextField = textfield
answerTextField?.placeholder = "Answer"
}