ios - UIApplicationDidBecomeActiveNotification 后 UINavigationController 奇怪的行为

标签 ios uinavigationcontroller swift2

我正在尝试在基于 UINavigationController 的应用程序上恢复我的动画。 在 viewWillAppear 中,我执行以下操作:

 override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)
        self.animateButtons()
    }

我还添加了这些:

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(addAnimation), name: UIApplicationDidBecomeActiveNotification, object: nil)

 NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(restorePosition), name: UIApplicationDidEnterBackgroundNotification, object: nil)

这是我的开始/恢复动画:

 func addAnimation() {
      self.animateButtons()
    }

  func restorePosition() {
        self.restoreToOriginalPosition()
    }

所以解释一下:加载 Controller 时,我在 viewDidLoad 中创建按钮 self.makeRoundQButtons。然后我在 viewWillAppear 中制作动画。

然后,当进入背景时,我恢复它们的原始位置 self.restoreToOriginalPosition(),并在激活后再次为它们设置动画 func addAnimation() {...}...

现在这在“事件” View 上工作正常。当我在我的导航树上“向下钻取”时,进入背景并再次激活,并使用“后退”按钮导航到任何“先前” View ,尽管 viewWillAppear 被称为没有动画发生。如果我向前移动然后再返回一切正常......

我做错了什么?

最佳答案

好吧,以防有人想知道...问题是我没有删除 viewDidDissapear 上的 observer 并且所有动画都是一次完成的,因为所有 Controller 都在在导航堆栈中!

关于ios - UIApplicationDidBecomeActiveNotification 后 UINavigationController 奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38029321/

相关文章:

ios - 将 MPVolumeView slider 拇指位置设置为设备音量

ios - 使用静态 IP 的 WIFI 连接不会调用 kCFSocketAcceptCallBack

ios - 在 Swift 中检测 CAShapeLayer 上的点击?

ios - 在 iOS 上通过 twitter 登录并在我的服务器上进行身份验证

ios - 状态栏色调和隐藏栏滑动

swift - 为什么 swift 编译器有时不接受速记参数名称?

swift - 如何扩展接受数组通用元素的类型?

iOS PDFKit在PDFView中调整pdf框架

ios - 导航 Controller 将 Storyboard中的所有 View 向下移动 64 像素,尽管它被隐藏了。

ios - 对包括导航栏和选项卡栏的 View 进行快照