2017-09-23 7 views
5

Lors de l'utilisation de l'élément de sélection HTML, UIWebView présente une liste déroulante native UIPopoverController sur l'iPad (iPhone utilise UIPickerView qui fonctionne bien).iOS 11 menus déroulants UIWebView complètement cassés sur iPad - UIPopoverController

Sur iOS11 cela semble être complètement rompu:

  • En cliquant menu déroulant en dehors de rejeter sans sélectionner une option entraîne dans popover étant fermée et re-présenté immédiatement, à l'occasion vide
  • Lorsque plus d'un menu déroulant sur la page, liste déroulante pour la nouvelle liste contient les éléments de la liste précédente
  • Lors de la sélection de la deuxième liste déroulante, la première s'ouvre de nouveau
  • Apparemment, le menu déroulant apparaît dans le coin supérieur gauche (il est probable que la source soit perdue)
  • étapes ci-dessus très occasionnellement entraîner dans l'accident suivant:

2017-09-23 09: 43: 13,190728 + 0100 Web [1779: 86622] * Mettre fin à l'application à cause exception uncaught « NSInternalInconsistencyException ', raison: ' UITableView dataSource n'est pas défini ' * Première pile d'appel de lancement: (0 CoreFoundation 0x000000010d4a01cb exceptionPreprocess + 171 1 libobjc.A.dylib
0x000000010c8bbf41 objc_exception_throw + 48 2 CoreFoundation
0x000000010d4a5362 + [NSException raise: Format: arguments:] + 98 3
Fondation 0x000000010c360089 - [NSAssertionHandler handleFailureInMethod: Objet: fichier: lineNumber: Description:] + 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 - [UISectionRowData heightForRow: lasection: canGuess:] + 259 8 UIKit 0x000000010dd31c1a - [UITableViewRowData heightForRow: lasection: 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: animés: usingPresentationValues:] + 146 12 UIKit 0x000000010da51a11 - [UITableView scrollToRowAtIndexPath: atScrollPosition: animé:] + 123 13 UIKit 0x000000010de72d11 - [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 principal + 111 27 libdyld. dylib
0x0000000110df1d81 début + 1 28 ???
0x0000000000000001 0x0 + 1`

J'ai créé un exemple d'application avec une ligne de code qui démontre la question:

https://github.com/AshRobinson/BrokenUIWebView

http://gph.is/2xmHFWs

Quelqu'un at-il une solution de contournement question ? La migration vers WKWebview n'est pas une option pour nous à ce stade.

Existe-t-il un moyen de forcer iPad à utiliser UIPickerView pour les listes déroulantes comme temporairement pour iPhone?

J'ai étudié des suggestions dans d'autres postes de débordement de la pile sans chance, par exemple:

ios 11 Beta 5 select drop-down list issue

+1

Avoir le même problème. Pas encore de solution. –

Répondre

1

Nous avons couru dans le même bug. Apple's documentation indique que toute application iOS 8+ devrait utiliser WKWebView. Une fois que nous sommes passés à WKWebView, nous ne voyons plus ce problème.

+1

Je vois encore le même problème même avec la mise à jour WKWebView – dmorrow

+0

@dmorrow Voici mon très simple [gist] (https://gist.github.com/egrudolph/842df35faa7cc10b054b1b5b6e920f5f) –

0

J'ai rencontré ce problème, avec un WKWebView qui a été ajouté directement dans une interface utilisateur. Mon problème était que la vue n'a pas eu d'UIViewController liés, de sorte que les lignes suivantes a fait l'affaire:

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

Au lieu d'ajouter myWkWebview directement à la fenêtre. Avec cela, les vues modales ont été ajoutées à nouveau :-)