2017-07-18 19 views
17

मेरी एप्लिकेशन एक महत्वपूर्ण दुर्घटना है जवाब देता है -WKWebView दुर्घटनाओं उपयोगकर्ता एक इनकमिंग iMessage

CALayer position contains NaN: [377.833 nan] 
निम्नलिखित ढेर साथ

-

Fatal Exception: CALayerInvalidGeometry 
0 CoreFoundation     0x18283afe0 __exceptionPreprocess 
1 libobjc.A.dylib    0x18129c538 objc_exception_throw 
2 CoreFoundation     0x18283af28 -[NSException initWithCoder:] 
3 QuartzCore      0x185b50acc CA::Layer::set_position(CA::Vec2<double> const&, bool) 
4 QuartzCore      0x185b50c48 -[CALayer setPosition:] 
5 QuartzCore      0x185b51198 -[CALayer setFrame:] 
6 UIKit       0x1889657a8 -[UIView(Geometry) setFrame:] 
7 UIKit       0x188979364 -[UIImageView _setViewGeometry:forMetric:] 
8 UIKit       0x1889c6c38 -[UIScrollView _adjustScrollerIndicators:alwaysShowingThem:] 
9 UIKit       0x188abfb34 -[UIScrollView(UIScrollViewInternal) _adjustForAutomaticKeyboardInfo:animated:lastAdjustment:] 
10 WebKit       0x18c14af3c -[WKWebView _keyboardChangedWithInfo:adjustScrollView:] 
11 CoreFoundation     0x1827d55f4 __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ 
12 CoreFoundation     0x1827d4d08 _CFXRegistrationPost 
13 CoreFoundation     0x1827d4a84 ___CFXNotificationPost_block_invoke 
14 CoreFoundation     0x1828437a8 -[_CFXNotificationRegistrar find:object:observer:enumerator:] 
15 CoreFoundation     0x18271895c _CFXNotificationPost 
16 Foundation      0x18322a930 -[NSNotificationCenter postNotificationName:object:userInfo:] 
17 UIKit       0x1893500e4 -[UIInputWindowController postStartNotifications:withInfo:] 
18 UIKit       0x189352350 __77-[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:]_block_invoke.907 
19 UIKit       0x188a383cc -[UIInputViewAnimationStyle launchAnimation:afterStarted:completion:forHost:fromCurrentPosition:] 
20 UIKit       0x189351dc8 -[UIInputWindowController moveFromPlacement:toPlacement:starting:completion:] 
21 UIKit       0x1893588b0 -[UIInputWindowController setInputViewSet:] 
22 UIKit       0x189351494 -[UIInputWindowController performOperations:withAnimationStyle:] 
23 UIKit       0x188a30d94 -[UIPeripheralHost(UIKitInternal) setInputViews:animationStyle:] 
24 UIKit       0x1890f7160 -[_UIRemoteKeyboards keyboardChanged:shouldConsiderSnapshottingKeyboard:isLocalEvent:] 
25 UIKit       0x1890f6e8c __37-[_UIRemoteKeyboards 

उपयोगकर्ताओं मैं कुछ आम बातें पाया के लॉग को देखते हुए -

  1. उन सब के सब है कि एक WKWebView शामिल एक दृश्य नियंत्रक में हैं
  2. सभी लॉग कहना है कि ऐप्लिकेशन है, "applicationWillResignActive" क्रैश
  3. ढेर से पता चलता है कि एक कुंजीपटल खोला गया था पहले, लेकिन हम उस दृश्य नियंत्रक पर कीबोर्ड खोलने के लिए दूर नहीं है
  4. सभी उपयोगकर्ताओं आईओएस 10.3 हैं +

एकमात्र परिदृश्य जो उपयुक्त था कि उपयोगकर्ता को iMessage मिला, जबकि ऐप एक दृश्यमान WKWebView के साथ था और बल ने इसे त्वरित उत्तर में स्पर्श किया। हमने इस परिदृश्य का परीक्षण किया और ऐप क्रैश हो गया।

तो हमें दुर्घटना मिली, लेकिन हमारे पास कोई सुराग नहीं है कि क्या हो रहा है। किसी को भी उस मुद्दे का सामना करना पड़ा है या यह पता है कि यह क्या हो सकता है?

धन्यवाद

+1

क्या आप इस समस्या को स्क्रैच से निर्मित एक परियोजना के साथ पुन: उत्पन्न कर सकते हैं (तो केवल न्यूनतम सेटअप + WKWebView)? – idmean

+0

मैं एक अलग परियोजना के साथ पुन: उत्पन्न करने के लिए गति दूसरा। इस बीच, आपके वर्तमान प्रोजेक्ट में जो वास्तव में क्रैश हो रहा है, '[कैलियर सेटपॉजिशन:]' पर एक प्रतीकात्मक ब्रेक पॉइंट सेट करें और 'po NSStringFromCGPoint (position) 'करके सेट की गई स्थिति को प्रिंट करें। यह होने से ठीक पहले '[UIView setFrame:]' पर एक प्रतीकात्मक ब्रेकपॉइंट भी सेट करें। फिर, फ्रेम मुद्रित करें। देखें कि क्या सेट किया जा रहा है। देखें कि क्या आपके वेबव्यू का फ्रेम वैध है या नहीं। अपनी बाधाओं की जांच करें, आदि .. – Brandon

+0

कोशिश की गई परिदृश्य के साथ कोशिश की और खेला लेकिन दुर्घटना उत्पन्न नहीं कर सका। ऐसा लगता है कि कुछ और टूटा हुआ है। –

उत्तर

2

सुनिश्चित नहीं हैं कि अगर यह आपकी मदद करता है। मैंने एनएएन मुद्दे का भी सामना किया है और यह तब होता है जब कोई मूल्य दूषित हो या अमान्य हो। इसलिए यदि आप यह पता लगा सकते हैं कि आपका मूल्य दूषित हो रहा है तो इसका मतलब है कि यह एनएएन प्रिंट कर रहा है, उस पर आप गार्ड स्टेटमेंट डाल सकते हैं।

2

(1) पहले डबल जाँच अपने लेआउट सही है, "autolayout" का उपयोग करें और अपने बाधाओं सही हैं और आप subviews सही सेट कर रहे हैं सुनिश्चित करें।

यह देखने के लिए लेआउट को दृष्टि से डीबग करने का प्रयास करें कि क्या कोई अजीब चीजें हो रही हैं या नहीं।

डीबग-> डिबगिंग देखें-> देखें पदानुक्रम देखें।

(2) स्टैक ट्रेस से मुझे पता चलता है कि कीबोर्ड प्रस्तुत किया जाता है, और इसके कारण, दृश्यों को कीबोर्ड के लिए जगह बनाने के लिए समायोजित करने की आवश्यकता होती है। यह ध्यान देने योग्य है जैसे ही स्टैक ट्रेस में एक संदेश आता है।

मैं भी resignFirstResponder के लिए, अपने AppDelegate में प्रयास हो सकता है

- (void)applicationWillResignActive:(UIApplication *)application { 
    [_wkWebView resignFirstResponder]; 
} 

(3) मैंने यह भी पाया है कि वहाँ एक बग है, जहां WKWEbView नहीं resignFirstResponder .. यह संबंधित हो सकती है जाएगा कि:

बग 167,898 - [iOS] - [WKWebView becomeFirstResponder] और - [WKWebView resignFirstResponder] कहा जाता है नहीं मिलता जब गैर कार्यक्रम संबंधी पहला जवाब बदलावों हो

हो सकता है कि एक तत्काल एक और दृश्य पेश करना होगा जैसे ही आपका एप्लिकेशन इस्तीफा दे देगा।

- (void)applicationWillResignActive:(UIApplication *)application { 
    // if _wkWebView is showing then hide and show other view 
} 
0

Xcode रन योजना में CG_NUMERICS_SHOW_BACKTRACE पर्यावरण चर सेट और यह स्टैकट्रेस कि गैर-अंकीय मान होने की वजह से हट जाएगा।

संबंधित मुद्दे