Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 正在进行的动画在移动到另一个视图控制器时导致延迟_Ios_Animation_Swift2 - Fatal编程技术网

Ios 正在进行的动画在移动到另一个视图控制器时导致延迟

Ios 正在进行的动画在移动到另一个视图控制器时导致延迟,ios,animation,swift2,Ios,Animation,Swift2,好的,我有一个按钮,它随键盘一起出现和隐藏(当键盘出现时,它也会出现,当我关闭键盘时,它也会随键盘一起消失) 因此,当我按下此按钮打开另一个视图控制器时,转换不会立即开始,会有少量延迟(这不好) 我的按钮动画: func keyboardWillShow(notification:NSNotification) { let userInfo:NSDictionary = notification.userInfo! let duration: Double = (noti

好的,我有一个
按钮
,它随键盘一起出现和隐藏(当键盘出现时,它也会出现,当我关闭键盘时,它也会随键盘一起消失)

因此,当我按下此按钮打开另一个视图控制器时,转换不会立即开始,会有少量延迟(这不好)

我的按钮动画:

    func keyboardWillShow(notification:NSNotification) {
    let userInfo:NSDictionary = notification.userInfo!
    let duration: Double = (notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double)
    let keyboardFrame:NSValue = userInfo.valueForKey(UIKeyboardFrameEndUserInfoKey) as! NSValue
    let keyboardRectangle = keyboardFrame.CGRectValue()
    self.nextButtonConstraint.constant  = keyboardRectangle.height
    UIView.animateWithDuration(duration) {
        self.nextButton.layoutIfNeeded()
    }

}

func keyboardWillHide(notification:NSNotification) {
    let duration: Double = (notification.userInfo![UIKeyboardAnimationDurationUserInfoKey] as! Double)
     self.nextButtonConstraint.constant  = -50
    UIView.animateWithDuration(duration) {
          self.nextButton.layoutIfNeeded()

    }
}
我尝试在按下按钮时禁用动画,但不起作用:

    @IBAction func nextButtonAction(sender: AnyObject) {

    UIView.setAnimationsEnabled(false)
    performSegueWithIdentifier("nextToPasswordSegue", sender: self)
     UIView.setAnimationsEnabled(true)
}
根据他的回答:

显然,在同一时间有一个动画正在引发问题。


有什么线索可以帮我解决吗

我遇到了同样的问题,在尝试移动到下一个控制器时遇到了延迟。对我来说,修复它的方法是在执行segue之前隐藏键盘(辞职FirstResponder)。然后,您需要在主队列上运行perform segue行,以确保它立即启动。下面是一个例子:

textField.resignFirstResponder()
dispatch_async(dispatch_get_main_queue()) {
    performSegueWithIdentifier("nextToPasswordSegue", sender: self)
}

我遇到了同样的问题,在尝试移动到下一个控制器时遇到了延迟。对我来说,修复它的方法是在执行segue之前隐藏键盘(辞职FirstResponder)。然后,您需要在主队列上运行perform segue行,以确保它立即启动。下面是一个例子:

textField.resignFirstResponder()
dispatch_async(dispatch_get_main_queue()) {
    performSegueWithIdentifier("nextToPasswordSegue", sender: self)
}