2015-09-20 12 views
12

Tôi thấy rằng trong ứng dụng của mình trong iOS 9, khi tôi nhấn lâu trong UIWebView, trình đơn chỉnh sửa thường xuất hiện, chỉ xuất hiện lần thứ hai (và sau) mà tôi dài nhấn. Lần đầu tiên tôi nhấn lâu trong bất kỳ webview cụ thể nào không có trình đơn ở tất cả các chương trình, mặc dù các lựa chọn xử lý xuất hiện. Lần thứ hai tôi nhấn lâu trong bất kỳ webview partiular nào, nó hoạt động như mong đợi.Menu Chỉnh sửa UIMenuController trong UIWebView chỉ xuất hiện lần thứ hai

Một triệu chứng lạ khác là thỉnh thoảng (nhưng không phải mọi lần) khi trình đơn xuất hiện, một cái gì đó nhanh chóng làm động trượt về phía bên trái màn hình, bắt nguồn từ menu, nhưng quá nhanh để xem nó là gì. Nó xảy ra ngay cả khi menu chỉnh sửa xuất hiện như nó cần. Tôi hy vọng điều này có liên quan đến vấn đề này.

Tôi chỉ được thử nghiệm trong trình mô phỏng vì tôi chưa cài đặt iOS 9 trên thiết bị.

Trong iOS 8, cùng một menu hoạt động như mong đợi.

Một nhà phát triển khác đã cho tôi một công việc xung quanh, có thể hoạt động khi bạn chỉ có một UIWebVeiw trên màn hình. Đặt điều này trong viewDidAppear (cảm ơn Chen Xian'an):

[[myWebView.scrollView.subviews firstObject] becomeFirstResponder]; 
[[NSOperationQueue mainQueue] addOperationWithBlock:^{ 
    [self becomeFirstResponder]; 
}]; 

Tuy nhiên, vì tôi có nhiều hơn một webView nó không phải là một giải pháp lý tưởng cho tôi. Và nếu tôi áp dụng nó cho mỗi webview nó chỉ hoạt động trên một trong những cuối cùng tôi áp dụng nó để.

Điều này dường như là một lỗi, và hy vọng Apple sẽ sớm khắc phục lỗi này, trong khi chờ đợi, có ai có ý tưởng sáng suốt về cách tôi có thể thực hiện công việc này cho nhiều hơn một webView không?

Trả lời

16

Tôi đã thử theo cách này và tôi đã thành công. Đầu tiên Bạn phải tùy chỉnh UIWebView và viết

- (BOOL)canBecomeFirstResponder { 
    return YES; 
} 

Second Bạn phải gọi phương pháp này trước khi xử lý báo chí dài của bạn

[yourWebView becomeFirstResponder]; 

Tôi hy vọng nó sẽ giúp ..

+0

Làm việc cho tôi. Ngoài ra, hãy xem bài đăng trên diễn đàn này của apple dev mà tôi đã thực hiện để thu thập thông tin: https://forums.developer.apple.com/thread/23353 –

2

Trong trường hợp của tôi vấn đề đó là UIWindow nơi UIWebView dường như không phải là cửa sổ chính. Những gì tôi đã làm để giải quyết nó là thêm một cuộc gọi đến [webView.window makeKeyAndVisible] tại phương thức webViewDidFinishLoad.

- (void)webViewDidFinishLoad:(UIWebView *)webView { 
    // Fix 
    [webView.window makeKeyAndVisible]; 
} 
Các vấn đề liên quan