【问题标题】:GPS not stopping while app entered the background state应用程序进入后台状态时 GPS 未停止
【发布时间】:2013-05-07 10:24:08
【问题描述】:

在我的应用中,使用两个 GPS 位置监视给定区域。该区域的半径在 UITextField 中输入。当在此字段中输入一个值并点击“开始”按钮时,将观察给定区域。即使应用程序进入后台状态。当点击停止按钮时,会调用 stopUpdatingLocation 并且 GPS 箭头会在应用程序关闭时消失。到目前为止,一切都很好。顺便说一句,后台服务在 plist 文件中被标记为 TRUE,因为该区域也必须在应用程序处于后台时被监视。

但是,当用户启动应用程序时,不要在文本字段中输入值并关闭应用程序,GPS 箭头仍然可见。

有没有办法在最后一种情况下停止 GPS 并在文本字段中输入值时使其保持运行?我可以在按下主页按钮时使用 if/else 语句吗?

【问题讨论】:

  • @P.J.感谢您的回复。我已经尝试过了,但是(我认为)因为使用了 mapView,所以在加载应用程序时位置服务会立即启动。有什么建议可以实现吗?

标签: iphone ios objective-c location locationmanager


【解决方案1】:

仅当用户在 textField 上输入值/或更好的用户点击开始按钮时才启动您的位置服务,而不是在您的应用程序启动时。

对于输入文本字段的用户:

-(BOOL) textFieldShouldReturn:(UITextField*) textField;

【讨论】:

  • 感谢您的回复。我已经尝试过了,但是(我认为)因为使用了 mapView,所以在加载应用程序时位置服务会立即启动。有什么建议可以实现吗?
  • 您的地图视图类仍在内存中,请将其从内存中删除。如果您使用 ARC,请设置您的 viewcontroller = nil,或者最好设置您的 mapView = nil,但请记住,只有在删除此视图时才这样做..
  • 谢谢,但这让我很困惑。当我这样做时,当应用程序转移到后台时,GPS 功能总是停止。当在文本字段中设置了一个值并且用户点击了开始按钮(因此观察给定区域)时,应用程序必须继续在后台运行。实在不知道怎么解决。
  • 所以你需要设置标志,如果你设置了开始按钮,那么你不需要对控制器执行 nil ,即你的视图,如果没有按下 start 则释放,即设置为 nil。希望对你有帮助..
  • 我尝试了几件事都没有成功,但我确实需要设置一个标志。如果点击开始按钮时的 textField(或者,实际上更好),则 BOOL 必须为 YES。然后,当应用程序被关闭时,应用程序必须保持在后台运行。所以,据我所知,我必须在我的 appDelegate.m 文件中做一些事情。我真的不知道该怎么做。我尝试在 didEnterBackground 方法中使用 [location stopUpdatingLocation] 但它没有停止。在阅读了很多文档之后,我仍然不清楚该怎么做。你能帮我写一些代码吗?
猜你喜欢
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
相关资源
最近更新 更多