2015-09-23 32 views
5

Tôi có một lỗi hình ảnh lạ mà chỉ ảnh hưởng đến iOS 9 thiết bị:iOS 9 - Bàn phím bật lên sau khi UIAlertView đuổi

ứng dụng của tôi đăng nhập UIViewController chạy ra và nhận được một mã thông báo OAuth khi bạn nhấn nút, giống như bạn' d mong đợi. Nếu phản hồi từ API của tôi trả lại mã trạng thái cụ thể, tôi bật lên UIAlertView rằng họ cần phải đặt lại mật khẩu của họ (điều này là nếu họ đã bị gắn cờ như vậy ở cuối máy chủ). Các trường email và mật khẩu để đăng nhập resignFirstResponder sau khi bạn nhấn nút, công cụ chuẩn.

Chỉ trên iOS 9, nếu bạn nhấn đường dẫn đặt lại, lần thứ hai bạn nhấn OK trên chế độ xem cảnh báo đó, bàn phím bật lên, có thể 800ms, sau đó loại bỏ lại. Nó gần giống như thứ gì đó được xếp hàng để trình bày nó, nhưng sự hiện diện của cảnh báo đã chặn nó cho đến khi bạn nhấn OK - nó hoàn toàn tức thời sau khi chạm vào cảnh báo.

Dường như thực sự khó khăn để gỡ lỗi. Tôi đã thêm điểm ngắt biểu tượng vào becomeFirstResponder và không được gọi là bất kỳ nơi nào gần quá trình này xảy ra.

Bất kỳ ý tưởng nào khác về cách tôi có thể xem xét gỡ lỗi/sửa lỗi này? Nó không ảnh hưởng đến iOS 7 và iOS 8, chỉ iOS 9.

Trả lời

13

Tôi gặp sự cố này khoảng 30 phút trước.

UIAlertView đã không được chấp nhận kể từ khi iOS9 được phát hành.

Chúng tôi giải quyết vấn đề này bằng cách sử dụng các UIAlertController, như thế này:

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Alert Title!" message:@"This is an alert message." preferredStyle:UIAlertControllerStyleAlert]; 

    UIAlertAction* ok = [UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:nil]; 
    [alertController addAction:ok]; 

    [self presentViewController:alertController animated:NO completion:nil]; 

này cần khắc phục vấn đề của bạn.

Nếu hoạt ảnh = CÓ, bạn có thể gặp phải vấn đề tương tự như trước đây. Đây là lỗi với iOS9.

Hãy cho tôi biết cách hoạt động và nếu điều này khắc phục được sự cố của bạn.

+2

Xin lưu ý rằng UIAlertController chỉ có sau khi iOS 8. Nếu mục tiêu của bạn bao gồm iOS 7 người dùng, xử lý nó một cách cẩn thận. – Summer

+0

Điều đó rất đúng. – cmart

+0

CẢM ƠN BẠN! tiết kiệm thời gian của tôi đập đầu của tôi trên tường –

0

Đây là một phần mở rộng để xử lý này trong nhanh chóng 3

extension UIViewController { 

    func presentOk(with title: String, and message: String, handler: ((UIAlertAction) -> Void)?) { 

     let alert = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.alert) 

     alert.addAction(UIAlertAction(title: "Ok", style: UIAlertActionStyle.default, handler: handler)) 

     OperationQueue.main.addOperation { 
      self.view.endEditing(true) 
      self.present(alert, animated: true, completion: nil) 
     } 
    } 
} 

Điều quan trọng là để ẩn bàn phím và trình bày các điều khiển trong hàng đợi chính.

Cách sử dụng

presentOk(with: "My app title", and: "this is the alert message", handler: nil) 
Các vấn đề liên quan