所以在iOS9上有新的requestLocation()方法.我试图使用它只获得一个位置更新,但它多次击中didUpdateLocations.
这不是只想叫它一次吗?我已将distanceFilter设置为1000.0,所以它很快就可以帮助快速返回.有任何想法吗 ?
即使我在委托方法中调用stopUpdatingLocation(),我仍然会获得三次委托.
注意:当我使用StartUpdatingLocation时,会发生相同的行为,我只想要一次返回,因为我想获取用户的当前国家/地区,因此请将该位置提供给反向寻址器
提前致谢
这是代码:
func getLocationOneTime(accuracy: Double){ print("Acquiring location one time - accuracy requested:\(accuracy)") locationManager.distanceFilter = accuracy locationManager.desiredAccuracy = accuracy // Start gpsOneTimeTimeout timer gpsTimeoutTimer = NSTimer.scheduledTimerWithTimeInterval(gpsOneTimeTimeout,target: self,selector: #selector(self.reportTimeout),userInfo: nil,repeats: false) locationManager.requestLocation() }
解决方法
通常对于这种问题,我只使用if语句来防止委托函数在第一次调用后改变任何东西
在这种情况下,如果您只是在寻找我会做的位置:
let locationManager = CLLocationManager() var userLocation: CLLocation! func locationManager(manager: CLLocationManager,didUpdateLocations locations: [CLLocation]) { if userLocation == nil { if let location = locations.first { userLocation = location self.locationManager.stopUpdatingLocation() } } }
编辑:我看了苹果文档,你正在做正确的事情,我怀疑你能够通过任何合理的手段来伤害它.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。