Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如果回答不正确,防止警报操作解除UIAlertController-Swift 4_Ios_Swift_Uialertview - Fatal编程技术网

Ios 如果回答不正确,防止警报操作解除UIAlertController-Swift 4

Ios 如果回答不正确,防止警报操作解除UIAlertController-Swift 4,ios,swift,uialertview,Ios,Swift,Uialertview,我有一个简单的家长网关,用于使用UIAlertController的儿童友好型游戏 当用户回答错误时-我不希望警报视图被取消,此时我的设备振动,屏幕抖动,但我无法让警报视图停留在屏幕上 提供的答案在Obj-C中或涉及禁用按钮,这显然不起作用,其他答案也不起作用-因此我希望会有更新的答案 func parentGate () { var val1 = [1,2,3,4] var val2 = [5,6,7,8] let valIndex1 = Int(arc4random

我有一个简单的家长网关,用于使用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"
} 
你不能这样做。 这是系统行为——当你点击按钮时,警报关闭,你无法阻止


只有一种解决方案是创建一个自定义视图控制器,该控制器看起来像本机的
UIAlertController

可能的副本它的可能副本不是副本,请重新阅读问题,我在目标C中不需要它,我也不想禁用该操作。@Brewski这是系统行为-当你点击按钮时,警报关闭,你无法阻止。好的,谢谢,我想我会做一个UI解决方案,显示“错误答案”@Brewski没问题!