2012-07-27 25 views
10

Tôi đang gọi vị trí hiện tại bất cứ khi nào người dùng đăng nhập và tại một số địa điểm khác. Bất cứ khi nào tôi làm như vậy, chế độ xem cảnh báo yêu cầu quyền của người dùng xuất hiện trong một giây hoặc lâu hơn và sau đó nó biến mất. Và rõ ràng, tôi không có được vị trí. điều này xảy ra mỗi khi tôi nhắc vị trí. Nó không cho phép người dùng nhấp vào Hủy hoặc OK. Vui lòng giúpCLLocationQuản lý thông báo tự động bị loại bỏ

+1

đã giải quyết bằng cách riêng của mình. :) –

+0

Tôi cũng gặp phải vấn đề này và dường như không hiểu tại sao!? – tagyro

Trả lời

14

Có thể bạn không giữ lại vị trí Người quản lý. Kết quả là, khi bạn gọi là [CLLocationManager startUpdatingLocation] thông báo được hiển thị nhưng nó sẽ biến mất ngay sau khi trình quản lý vị trí được phát hành. Nó xảy ra với tôi một lần khi tôi gõ gán thay vì mạnh vào tài sản mà tôi đã tạo cho ví dụ locationManger của tôi.

+0

Tại sao tôi không nghĩ về điều đó? Cảm ơn. – DCMaxxx

+0

@NikitaP Điều này phải được đánh dấu là câu trả lời. –

0

Vấn đề tương tự đang gặp phải trong dự án của tôi (lang thang nhanh).

hãy thử điều này, Tuyên bố rằng Biến CLLocationmanage dưới dạng biến toàn cục và gọi nơi bạn muốn.

ví dụ:

var locManager = CLLocationManager() 

    override func viewDidLoad() 
    { 


    super.viewDidLoad() 

let iOS7 = floor(NSFoundationVersionNumber) <= floor(NSFoundationVersionNumber_iOS_7_1) 

let iOS8 = floor(NSFoundationVersionNumber) > floor(NSFoundationVersionNumber_iOS_7_1) 

      locManager.delegate = self 
      locManager.desiredAccuracy = kCLLocationAccuracyBest 
      if(iOS8) 
      { 
       locManager.requestAlwaysAuthorization()// only support ios 8.0 
      } 

    } 
0

Cố gắng di chuyển phương pháp đại biểu setter sau startUpdatingLocation. Nó làm việc cho tôi. Ví dụ:

CLLocationManager *m = [[CLLocationManager alloc] init]; 
[m startUpdatingLocation]; 
m.delegate = self; 

Opz, tiếng Anh kém của tôi.

0

Tôi không thể nhận xét bài đăng của anh ấy, vì vậy tôi trả lời ở đây.

Gianluca Tranchedone là đúng. Im trường hợp của tôi, tôi đã giữ lại CLLocationManager. NHƯNG: Nó kích hoạt cuộc gọi lại đầu tiên, ngay sau khi AlertView được hiển thị, để báo cho đại biểu biết rằng trạng thái chưa được xác định. Tôi đã mắc lỗi khi giải phóng bản sao khi nhận được bất kỳ cuộc gọi lại nào.

Đây là những gì phương pháp bây giờ trông giống như và nó hoạt động:

-(void)locationManager:(CLLocationManager*)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status { 
switch (status) { 
    case kCLAuthorizationStatusNotDetermined: 
     break; 
    default: 
     _locationManagerForAuthorizationRequest.delegate = nil; 
     self.locationManagerForAuthorizationRequest = nil; 
} 

}

Các vấn đề liên quan