2017-09-23 43 views
5

Khi sử dụng phần tử chọn HTML, UIWebView trình bày một danh sách thả xuống trên iPad (iPhone sử dụng UIPickerView hoạt động tốt).Menu thả xuống UIWebView dành cho iOS 11 hoàn toàn bị hỏng trên iPad - UIPopoverController

On iOS11 này dường như hoàn toàn bị hỏng:

  • Nhấp thả xuống bên ngoài để bỏ mà không chọn một kết quả lựa chọn trong popover bị đóng cửa và ngay lập tức tái trình bày, thỉnh thoảng trống
  • Khi có nhiều hơn một danh sách thả xuống trên trang, danh sách thả xuống mới chứa các phần tử từ danh sách trước
  • Khi chọn menu thả xuống thứ hai, trước tiên mở lại
  • Thả xuống thỉnh thoảng xuất hiện ở góc trên cùng bên trái (có thể bị mất nguồn chế độ xem)
  • bước trên rất thỉnh thoảng dẫn đến sự sụp đổ sau:

2017-09-23 09: 43: 13,190728 + 0100 Web [1779: 86.622] * Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInternalInconsistencyException ', lý do: ' UITableView dataSource không được đặt ' * Ngăn xếp cuộc gọi ném đầu tiên: (0 CoreFoundation 0x000000010d4a01cb exceptionPreprocess + 171 1 libobjc.A.dylib
0x000000010c8bbf41 objc_exception_throw + 48 2 CoreFoundation
0x000000010d4a5362 + [NSException tăng: Định dạng: đối số:] + 98 3
Foundation 0x000000010c360089 - [NSAssertionHandler handleFailureInMethod: đối tượng: file: linenumber: Mô tả:] + 193 4
UIKit 0x000000010da742f5 - [UITableView _createPreparedCellForGlobalRow: withIndexPath: willDisplay:] + 1756 5 UIKit 0x000000010da7451a - [UITableView _createPreparedCellForRowAtIndexPath: willDisplay:] + 81 6 UIKit 0x000000010da82137 - [UITableView _heightForRowAtIndexPath:] + 208 7
UIKit 0x000000010dd2b939 012.351.- [UISectionRowData heightForRow: inSection: canGuess:] + 259 8 UIKit 0x000000010dd31c1a - [UITableViewRowData heightForRow: inSection: canGuess: adjustForReorderedRow:] + 277 9
UIKit 0x000000010dd36230 - [UITableViewRowData ensureHeightsFaultedInForScrollToIndexPath: withScrollPosition: boundsHeight:] + 964 10 UIKit 0x000000010da51110 - [UITableView _contentOffsetForScrollingToRowAtIndexPath: atScrollPosition: usingPresentationValues:] + 2783 11 UIKit 0x000000010da51b8f - [UITableView _scrollToRowAtIndexPath: atScrollPosition: hoạt hình: usingPresentationValues:] + 146 12 UIKit 0x000000010da51a11 - [UITableView scrollToRowAtIndexPath: atScrollPosition: hoạt hình:] + 123 13 UIKit 0x000000010de72d11.210 - [UIWebSelectTableViewController viewWillAppear:] + 247 14 UIKit 0x000000010dabe9b0 - [UIViewController _setViewAppearState: isAnimating:] + 444 15 UIKit 0x000000010dabf245 - [UIViewController __viewWillAppear:] + 147 16 UIKit 0x000000010da8b881 __56- [UIPresentationController runTransitionForCurrentState] _block_invoke + 1088 17 UIKit
0x000000010d926c61 _runAfterCACommitDeferredBlocks + 318 18 UIKit
0x000000010d91530d _cleanUpAfterCAFlushAndRunDeferredBlocks + 280 19 UIKit 0x000000010d945600 _afterCACommitHandler + 137 20 CoreFoundation 0x000000010d442db7 __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION
+ 23 21 CoreFoundation 0x000000010d442d0e __CFRunLoopDoObservers + 430 22 CoreFoundation 0x000000010d427324 __CFRunLoopRun + 1572 23 CoreFoundation
0x000000010d426a89 CFRunLoopRunSpecific + 409 24 GraphicsServices
0x00000001124c89c6 GSEventRunModal + 62 25 UIKit
0x000000010d91ad30 UIApplicationMain + 159 26 Web
0x000000010bfb014f chính + 111 27 libdyld. dylib
0x0000000110df1d81 bắt đầu + 1 28 ???
0x0000000000000001 0x0 + 1`

Tôi tạo ra một ứng dụng mẫu với một dòng mã đó chứng tỏ vấn đề:

https://github.com/AshRobinson/BrokenUIWebView

http://gph.is/2xmHFWs

Có ai có một cách giải quyết cho vấn đề này ? Di chuyển sang WKWebview không phải là tùy chọn cho chúng tôi ở giai đoạn này.

Có cách nào để buộc iPad sử dụng UIPickerView cho danh sách thả xuống theo iPhone tạm thời không?

tôi đã điều tra gợi ý trong bài viết stack overflow khác không có may mắn, ví dụ:

ios 11 Beta 5 select drop-down list issue

+1

Có cùng một vấn đề. Chưa có giải pháp nào. –

Trả lời

1

Chúng tôi đã gặp lỗi tương tự. Apple's documentation nói rằng mọi ứng dụng iOS 8+ đều nên sử dụng WKWebView. Khi chúng tôi chuyển sang WKWebView, chúng tôi không còn thấy vấn đề này nữa.

+1

Tôi vẫn thấy sự cố tương tự ngay cả khi nâng cấp WKWebView – dmorrow

+0

@ ngày mai Đây là [gist] rất đơn giản của tôi (https://gist.github.com/egrudolph/842df35faa7cc10b054b1b5b6e920f5f) –

0

Tôi gặp sự cố này, với WKWebView đã được thêm trực tiếp vào UIWindow. Vấn đề của tôi là quan điểm không có một UIViewController liên quan đến nó, vì vậy những dòng sau đã làm các trick:

containerVC = [[UIViewController alloc] init]; 
[containerVC.view addSubview:myWkWebview]; 
[window addSubview:containerVC.view]; 

Thay vì thêm myWkWebview trực tiếp vào cửa sổ. Với điều này, chế độ xem phương thức đã được thêm lại :-)

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