我有一个视图控制器,它使用一个NSTimer来执行一些代码.
什么是检测应用程序何时进入后台的最佳方法,以便我可以暂停计时器?
我试图在某些ViewController使用中运行一个函数AppDelegate
func applicationDidBecomeActive(_ application: UIApplication) {
ViewController().grabData()
}
Run Code Online (Sandbox Code Playgroud)
但不知何故,当应用程序从后台进入应用程序后变为活动状态时,该功能似乎根本无法运行.
该功能看起来像这样
func grabData() {
self._DATASERVICE_GET_STATS(completion: { (int) -> () in
if int == 0 {
print("Nothing")
} else {
print(int)
for (_, data) in self.userDataArray.enumerated() {
let number = Double(data["wage"]!)
let x = number!/3600
let z = Double(x * Double(int))
self.money += z
let y = Double(round(1000*self.money)/1000)
self.checkInButtonLabel.text = "\(y) KR"
}
self.startCounting()
self.workingStatus = 1
}
})
}
Run Code Online (Sandbox Code Playgroud)
并使用此var
var money: Double = 0.000
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
谢谢!
我需要检查应用程序是否移到后台。为什么?
嗯,因为我的应用程序支持蓝牙,并且一次只能连接一个人。因此,如果他们不使用它并且应用程序在后台,请断开它们并将它们发送到连接主页。
现在我已经做到了。我在主要的第一类中有一个选择器和一个断开连接并发送到第一页的函数。但我没有意识到的是,如果将控制面板向上拖动,则该应用程序位于“后台”中。
环顾四周,似乎没有办法检测控制面板是否已启动。那么有没有人对我如何以不同的方式做到这一点有任何想法?
实际上,我只是想要它,因此如果应用程序因任何其他原因而不是控制面板被调出而移至后台,请断开与设备的连接。
选择器:
let notificationCenter = NotificationCenter.default
notificationCenter.addObserver(self, selector: #selector(appMovedToBackground), name: Notification.Name.UIApplicationWillResignActive, object: nil)
Run Code Online (Sandbox Code Playgroud)
功能:
@objc func appMovedToBackground() {
if (ViewController.connectedPeripheral != nil) {
print("App moved to background!")
let storyBoard : UIStoryboard = UIStoryboard(name: "Main", bundle:nil)
let nextViewController = storyBoard.instantiateViewController(withIdentifier: "connectView") as! ViewController
self.navigationController?.pushViewController(nextViewController, animated: true)
ViewController.centralManager.cancelPeripheralConnection(ViewController.connectedPeripheral!)
}
else {
print("App moved to background but no device is connected so no further action taken")
}
}
Run Code Online (Sandbox Code Playgroud)
这不是其他问题的重复。我知道如何检查应用程序是否处于后台状态。我只是不想在控制面板出现时断开连接...
我有一个支持iOS 12的应用程序。我正在添加对iOS 13的支持。我有一个视图控制器,当该应用程序进入后台时,它需要执行快速操作。
在iOS 13之前,这非常简单。添加一行,例如:
NotificationCenter.default.addObserver(self, selector: #selector(didEnterBackground), name: UIApplication.didEnterBackgroundNotification, object: nil)
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad或也许init。
然后添加didEnterBackground方法:
@objc func didEnterBackground() {
// Do my background stuff
}
Run Code Online (Sandbox Code Playgroud)
对于iOS 12及更低版本,这一切都很好。
但是现在有了iOS 13的场景支持,在iOS 13上运行时不会调用我的通知。它仍然可以在iOS 12模拟器/设备上使用。
我需要进行哪些更改?
当应用程序进入后台时,我想在顶部视图控制器顶部的 xib 文件中放置一个模糊视图(以便可以对其进行自定义),以便用户在使用多任务处理时无法看到我的应用程序的内容。我该怎么做?我用根视图控制器尝试了很多东西,但没有用。我知道我需要使用这些委托方法,但我不确定如何获取顶视图控制器并在其上放置一个视图。我正在使用带有一堆导航控制器的标签栏控制器。
func applicationWillResignActive(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)
和
func applicationWillEnterForeground(_ application: UIApplication) {
}
Run Code Online (Sandbox Code Playgroud)
当应用程序再次打开时,我显然想摆脱那种模糊的视图,但我也想使用 Face/Touch ID 来提供访问权限。我认为使用 LocalAuthentication 非常简单。
我正在运行来自iPhone 6上来自keras的mlmodel。预测通常会因错误而失败Error computing NN outputs。有谁知道可能是什么原因,如果我有什么办法可以解决?
do {
return try model.prediction(input1: input)
} catch let err {
fatalError(err.localizedDescription) // Error computing NN outputs error
}
Run Code Online (Sandbox Code Playgroud)