UIAlertController缓慢出现和解散 - 斯威夫特

时间:2016-06-14 01:54:55

标签: ios swift performance uialertcontroller

我正在开发一个使用Swift的iOS应用程序,并且UIAlertController的两个问题很慢!

1 - 显得缓慢而紧张

我已经设置了一个UITableViewController,当我点击一个单元格时,它会触发以下代码:

let alertController = UIAlertController(title: "Enter Exam Grade", message: nil, preferredStyle:UIAlertControllerStyle.Alert)

        alertController.addTextFieldWithConfigurationHandler({(textField: UITextField) in
            textField.placeholder = "Earned"
            textField.keyboardType = .NumberPad
        })

        alertController.addTextFieldWithConfigurationHandler({(textField: UITextField) in
            textField.placeholder = "Out of"
            textField.keyboardType = .NumberPad
        })

        alertController.addAction(UIAlertAction(title: "Save", style: UIAlertActionStyle.Default, handler: {
            (alert: UIAlertAction) in

            if let gradeTextField = alertController.textFields!.first as UITextField? {

                if let outOfTextField = alertController.textFields!.last as UITextField? {

                    if (gradeTextField.text != "" && outOfTextField.text != "") {

                        print(gradeTextField.text)
                        print(outOfTextField.text)

                    }

                }

            }

        }))

        alertController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: nil))

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

当我导航到视图,并首次点按该单元格时,我会收到警报的抖动和缓慢加载,如下面的GIF中所示。有趣的是,随后的水龙头通常可以平稳而快速地加载。

Jittery to appear

编辑:GIF的帧速率有点太慢,所以我附上了一些从它放慢的视频中拍摄的剧照:

a)首先点击“成绩考试”,警报开始出现在屏幕中央,但随后向上移动(摇晃)到正确位置。

enter image description here enter image description here

b)随后的点击,警报从头开始显示在正确的上方位置。

enter image description here enter image description here

2 - 当警报解除时键盘缓慢关闭

我已经在StackOverflow周围看到了这个问题,没有真正令人满意的解决方案。当您点击取消按钮时,警报将快速解除,但键盘也需要很长时间才能解除。这应该是即时的,因为挂式键盘给用户留下了不好的印象。

Slow to dismiss keyboard

1 个答案:

答案 0 :(得分:0)

从您提供的gif文件中启动键盘似乎是“正常”。但假设它很慢,也许你可以尝试这个,如果它加载更快。

提一下我没试过这段代码并从这里输入。

用于慢速显示键盘。

textField.placeholder = "Out of"
textField.keyboardType = .NumberPad
textField.becomeFirstResponder()

慢速隐藏键盘。

alertController.addAction(UIAlertAction(title: "Cancel", style: .Cancel, handler: {
            (alert: UIAlertAction) in
       self.view.endEditing(true)
}))