Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.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
Swift 计时器过期后如何从UIButton中移除焦点(tvOS)_Swift_Xcode_Uibutton_Tvos - Fatal编程技术网

Swift 计时器过期后如何从UIButton中移除焦点(tvOS)

Swift 计时器过期后如何从UIButton中移除焦点(tvOS),swift,xcode,uibutton,tvos,Swift,Xcode,Uibutton,Tvos,我正在设置一个简单的tvOS应用程序,底部有一个菜单停靠(包含按钮的堆栈视图)。在5秒钟的不活动之后,我希望dock隐藏(向下移动,看不见)并从当前聚焦按钮中移除焦点。码头应重新出现,并重新关注远程控制活动。使用以下代码,dock将隐藏,但仅在应用程序启动后隐藏一次。任何帮助都将不胜感激 @IBOutlet weak var menuDock: UIStackView! var timer = Timer() func resetTimer() { timer = Timer.sch

我正在设置一个简单的tvOS应用程序,底部有一个菜单停靠(包含按钮的堆栈视图)。在5秒钟的不活动之后,我希望dock隐藏(向下移动,看不见)并从当前聚焦按钮中移除焦点。码头应重新出现,并重新关注远程控制活动。使用以下代码,dock将隐藏,但仅在应用程序启动后隐藏一次。任何帮助都将不胜感激

@IBOutlet weak var menuDock: UIStackView!

var timer = Timer()

func resetTimer() {
    timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(ViewController.hideDock), userInfo: nil, repeats: true)
    let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.showDock))
    self.view.addGestureRecognizer(tapRecognizer)
}

@objc func hideDock() {
    UIView.animate(withDuration: 0.5, animations: {
        self.menuDock.frame.origin.y += 240
    }, completion: nil)
    timer.invalidate()
}

@objc func showDock() {
    UIView.animate(withDuration: 0.5, animations: {
        self.menuDock.frame.origin.y -= 240
    }, completion: nil)
    timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(ViewController.hideDock), userInfo: nil, repeats: true)
    timer.invalidate()
}
@IBOutlet weak var menuDock: UIStackView!

var timer = Timer()

func resetTimer() {
    timer = Timer.scheduledTimer(timeInterval: 5.0, target: self, selector: #selector(ViewController.hideDock), userInfo: nil, repeats: true)
    let tapRecognizer = UITapGestureRecognizer(target: self, action: #selector(ViewController.showDock))
    self.view.addGestureRecognizer(tapRecognizer)
  }

  @objc func hideDock() {
    UIView.animate(withDuration: 0.5, animations: {
      self.menuDock.frame.origin.y += 240
      self.menuDock.arrangedSubviews.forEach{
        ($0 as? UIButton)?.isEnabled = false
      }
      self.setNeedsFocusUpdate()
      self.updateFocusIfNeeded()
    }, completion: nil)
    timer.invalidate()
  }

  @objc func showDock() {
    UIView.animate(withDuration: 0.5, animations: {
      self.menuDock.frame.origin.y -= 240
      self.menuDock.arrangedSubviews.forEach{
        ($0 as? UIButton)?.isEnabled = true
      }
      self.setNeedsFocusUpdate()
      self.updateFocusIfNeeded()
    }, completion: nil)
    timer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(ViewController.hideDock), userInfo: nil, repeats: true)
    timer.invalidate()
  }