2010-12-06 8 views
5

Après la mise à jour du SDK iOS 4.2, je reçois l'exception suivante dans mon application:exception CALayerInvalidGeometry pendant la lecture vidéo HTML5

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [nan 22]' 

(S'il vous plaît voir ci-dessous pour la copie de la pile d'appel)

Détails:

'- UIWebView avec étiquette vidéo est à l'intérieur UIScrollView

' - la vidéo peut jouer à l'intérieur UIWebView, mais lorsque vous essayez de faire un zoom avant et que vous utilisez le zoom arrière ou le bouton terminé du lecteur, l'application se bloque avec cette exception. Cela ne se produit pas sur le SDK 3,2

*** Call stack at first throw: 
(
0 CoreFoundation      0x01150be9 __exceptionPreprocess + 185 
1 libobjc.A.dylib      0x012a55c2 objc_exception_throw + 47 
2 CoreFoundation      0x01109628 +[NSException raise:format:arguments:] + 136 
3 CoreFoundation      0x0110959a +[NSException raise:format:] + 58 
4 QuartzCore       0x0200996a _ZL18CALayerSetPositionP7CALayerRKN2CA4Vec2IdEEb + 177 
5 QuartzCore       0x020098b5 -[CALayer setPosition:] + 42 
6 QuartzCore       0x020097cc -[CALayer setFrame:] + 763 
7 UIKit        0x0030d307 -[UIView(Geometry) setFrame:] + 255 
8 UIKit        0x003e6add -[UISlider setFrame:] + 166 
9 MediaPlayer       0x00f0faee -[MPDetailSlider setFrame:] + 78 
10 MediaPlayer       0x00f267b7 -[MPWildcatFullScreenVideoOverlay layoutSubviews] + 1280 
11 QuartzCore       0x0200e451 -[CALayer layoutSublayers] + 181 
12 QuartzCore       0x0200e17c CALayerLayoutIfNeeded + 220 
13 QuartzCore       0x0200737c _ZN2CA7Context18commit_transactionEPNS_11TransactionE + 310 
14 QuartzCore       0x020070d0 _ZN2CA11Transaction6commitEv + 292 
15 QuartzCore       0x020377d5 _ZN2CA11Transaction17observer_callbackEP19__CFRunLoopObservermPv + 99 
16 CoreFoundation      0x01131fbb __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 27 
17 CoreFoundation      0x010c70e7 __CFRunLoopDoObservers + 295 
18 CoreFoundation      0x0108fbd7 __CFRunLoopRun + 1575 
19 CoreFoundation      0x0108f240 CFRunLoopRunSpecific + 208 
20 CoreFoundation      0x0108f161 CFRunLoopRunInMode + 97 
21 GraphicsServices     0x01a85268 GSEventRunModal + 217 
22 GraphicsServices     0x01a8532d GSEventRun + 115 
23 UIKit        0x002e642e UIApplicationMain + 1160 
24 ecom        0x000022c0 main + 102 
25 ecom        0x00002251 start + 53 
) 
terminate called after throwing an instance of 'NSException' 

Répondre

0

J'ai eu le même problème avec une classe héritant d'un UIScrollView. La solution était plutôt étrange: au lieu d'utiliser "initWithFrame", j'ai simplement utilisé "init" et défini le cadre manuellement dans la ligne suivante. Cela a résolu le problème pour moi.

Le problème est survenu uniquement sur un objet spécifique - j'ai créé sans problème des objets du même type avec "initWithFrame" dans d'autres parties de mon programme. Le problème s'est également produit seulement sur un iPhone 4 avec iOS 4.2. Il a fonctionné sans problème sur iPhone 4 avec iOS 4.1 et sur iPad avec iOS 4.2.

6

Depuis iOS 4.2, il semble y avoir un problème avec les calculs de la taille d'image pour le curseur dans le MoviePlayer.

Si la largeur de la trame est réglée entre 143,0 235,0 et cette exception se produit.

1

Je voyais un problème similaire avec mon UIScrollView. J'ai remarqué cet avertissement dans les docs iOS:

Important: Vous ne devriez pas intégrer objets UIWebView ou UITableView dans objets UIScrollView. Si vous le faites, un comportement inattendu peut résulter car les événements tactiles pour les deux objets peuvent être mélangés et mal gérés.

J'avais un UITextView incorporé dans le scrollView. Retrait qui a résolu le problème pour moi.

0

J'ai commencé à avoir les mêmes expcetions avec 4.2 et Xcode 4.2.5 (uniquement dans le simulateur - jamais sur le réel 4.2 appareil) et avec le code CAGradientLayer pour gradient de fond pour les cellules - qui travaille par ailleurs très bien sur poignée d'autres applications,

heureusement,

entourant le code avec le bloc Try-Catch ne produit expcetion parfois, mais pas des artefacts visibles apparaissent, toutes les cellules ne sont toujours milieux dégradés.

Questions connexes