2010-12-06 15 views
5

Después de actualizar al iOS 4.2 SDK, recibo el siguiente excepción en mi aplicación:CALayerInvalidGeometry excepción durante el vídeo HTML5 jugar

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

(Por favor, ver más abajo para la copia de pila de llamadas)

detalles:

'- UIWebView con la etiqueta de vídeo está dentro UIScrollView

' - vídeo puede reproducir en el interior UIWebView, pero cuando se intenta acercar, y usar cualquiera de los botones de alejamiento o hecho desde el reproductor, la aplicación se bloquea con la excepción mencionada. Esto no ocurre en el 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' 

Respuesta

0

También tuve el mismo problema con una clase que hereda de una UIScrollView. La solución fue bastante extraña: en lugar de usar "initWithFrame", utilicé "init" y configuré el marco manualmente en la siguiente línea. Esto resolvió mi problema.

El problema ocurrió solo en un objeto específico: Creé objetos del mismo tipo con "initWithFrame" en otras partes de mi programa sin problemas. El problema también ocurrió solo en un iPhone 4 con iOS 4.2. Funcionó sin problemas en el iPhone 4 con iOS 4.1 y en un iPad con iOS 4.2.

6

Desde iOS 4.2 parece haber un problema con los cálculos del tamaño del marco para el control deslizante dentro del MoviePlayer.

Si el anchura del bastidor está situado entre 143,0 y 235,0 se produce esta excepción.

1

Estaba viendo un problema similar con mi UIScrollView. Me di cuenta esta advertencia en los documentos iOS:

Importante: No se debe incrustar UIWebView o UITableView objetos en objetos UIScrollView. Si lo hace, comportamiento inesperado puede resultar porque eventos táctiles para los dos objetos pueden mezclarse y manejarse incorrectamente.

Tenía un UITextView incrustado en el scrollView. Eliminar eso solucionó el problema para mí.

0

He empezado a tener los mismos expcetions con Xcode 4.2 y 4.2.5 (sólo en simulador - nunca en el dispositivo real 4.2), con código de CAGradientLayer de gradiente de fondo para las células - que está trabajando bien en lo contrario puñado de otras aplicaciones,

afortunadamente,

que rodea el código con el bloque Try-Catch sí produce expcetion a veces, pero no aparecerán artefactos visibles, todas las células no tienen todavía gradiente de antecedentes.

Cuestiones relacionadas