2010-12-06 6 views
5

После обновления до iOS 4.2 SDK, я получаю следующее исключение в моем приложении:CALayerInvalidGeometry исключение во время видео HTML5 играть

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

(Пожалуйста, смотрите ниже копию стека вызовов)

Подробности:

'- UIWebView с видео тегом внутри UIScrollView

' - Видео может играть внутри UIWebView, но при попытке увеличить масштаб и использовать кнопку увеличения или завершения с проигрывателя, приложение вылетает с указанным исключением. Это не происходит на 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' 

ответ

0

я была такая же проблема с классом наследуемых от UIScrollView. Решение было довольно странным: вместо использования «initWithFrame» я просто использовал «init» и вручную установил фрейм в следующей строке. Это решило проблему для меня.

Проблема возникла только на одном конкретном объекте - я создал объекты одного типа с «initWithFrame» в других частях моей программы без проблем. Проблема также возникла только на iPhone 4 с iOS 4.2. Он работал без проблем на iPhone 4 с iOS 4.1 и на iPad с iOS 4.2.

6

Поскольку iOS 4.2, похоже, проблема с расчетами размера кадра для слайдера внутри MoviePlayer.

Если ширина кадра устанавливается между 143,0 и 235,0 происходит это исключение.

1

Я видел аналогичную проблему с моим UIScrollView. Я заметил это предупреждение в ИУ документы:

Важно: Вы не должны вставлять UIWebView или UITableView объекты в объектов UIScrollView. Если вы это сделаете, может возникнуть непредвиденное поведение , потому что события касания для двух объектов могут быть смешаны и неправильно обработаны .

У меня был UITextView, встроенный в scrollView. Удаление этого исправлено для меня.

0

Я начал иметь те же expcetions с 4,2 и Xcode 4.2.5 (только в тренажере - никогда на реальном устройстве 4.2) и с CAGradientLayer кодом для градиентной-фона для ячеек - который в противном случае работает нормально на несколько других приложений,

к счастью,

окружающих код с Try-Catch блок действительно производит expcetion иногда, но не появляются видимые артефакты, все клетки все еще есть градиентные фоны.

Смежные вопросы