5

更新到 iOS 4.2 SDK 后,我在我的应用程序中收到以下异常:

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'
4

4 回答 4

6

自 iOS 4.2 以来,MoviePlayer 中滑块的帧大小计算似乎存在问题。

如果框架的宽度设置在143.0235.0之间,则会发生此异常。

于 2011-01-03T13:15:30.630 回答
1

我的 UIScrollView 也出现了类似的问题。我在 iOS 文档中注意到了这个警告:

重要提示:您不应该在 UIScrollView 对象中嵌入 UIWebView 或 UITableView 对象。如果这样做,可能会导致意外行为,因为两个对象的触摸事件可能会混淆并错误处理。

我在滚动视图中嵌入了一个 UITextView。删除它为我解决了这个问题。

于 2011-01-09T05:21:18.267 回答
0

我已经开始对 4.2 和 Xcode 4.2.5(仅在模拟器中- 从不在真正的 4.2 设备上)以及用于单元格梯度背景的 CAGradientLayer 代码产生相同的预期 - 否则在少数其他应用程序上工作正常,

幸运的是,

用 Try-Catch 块包围代码有时会产生异常,但没有出现可见的伪影,所有单元格仍然具有渐变背景。

于 2011-01-31T03:20:27.597 回答
0

从 UIScrollView 继承的类也有同样的问题。解决方案很奇怪:我没有使用“initWithFrame”,而是使用了“init”并在下一行手动设置了框架。这为我解决了这个问题。

该问题仅发生在一个特定对象上-我在程序的其他部分中使用“initWithFrame”创建了相同类型的对象而没有问题。该问题也仅出现在装有 iOS 4.2 的 iPhone 4 上。它在带有 iOS 4.1 的 iPhone 4 和带有 iOS 4.2 的 iPad 上确实可以正常工作。

于 2010-12-08T10:46:16.603 回答