2017-02-09 4 views
5

तो एनिमेट है और इसलिए, मैं ने वही समस्या नहीं मिली है। कुछ करीब आ गए लेकिन मेरी तरह नहीं।टूलबार जब गूगल के माध्यम से मेरी लंबी खोज के बाद मल्टीटास्किंग

हाथ पर समस्या: कीबोर्ड में दिखाए जाने पर मेरे ऐप (WKWebView आधारित) में, और मैं घर को दो बार टैप करता हूं और कीबोर्ड दिखाता है, तो मेरे ऐप कीबोर्ड को छुपाया जाता है। कोई बात नहीं है। तो जब मैं फिर से मल्टीटास्क करता हूं, स्नैपशॉट में यह मेरा ऐप लेता है, कीबोर्ड चला जाता है, लेकिन मेरे ऊपर मौजूद कस्टम टूलबार के नीचे कोई कीबोर्ड नहीं होता है। मैं अपने ऐप को टैप करता हूं और यह स्क्रीन के नीचे तक एनिमेट करता है और फिर नीचे चला जाता है।

मैंने जो कोशिश की है: मुझे [self.view endEditing: YES], इस्तीफा देने के लिए फर्स्ट रेस्पॉन्डर और कीबोर्ड को बंद करने के सभी तरीकों के बारे में पता है। दृश्य के माध्यम से रखने और मिश्रण करने का प्रयास किया गया है, आवेदन करने के लिए, अनुप्रयोग WillResignActive और applicationDidEnterBackground। इनमें से कोई भी मेरे टूलबार मुद्दे को संभाल नहीं पाएगा।

यह है कि कैसे मैं पर और स्क्रीन बंद अपने कीबोर्ड एनिमेट रहा हूँ, उपकरण पट्टी दृश्यमान रखते हुए है।

- (void)keyboardWillShow:(NSNotification*)notification 
{ 
    NSDictionary* info = [notification userInfo]; 
    NSNumber *durationValue = info[UIKeyboardAnimationDurationUserInfoKey]; 
    NSNumber *curveValue = info[UIKeyboardAnimationCurveUserInfoKey]; 
    NSValue *endFrame = info[UIKeyboardFrameEndUserInfoKey]; 

    [UIView animateWithDuration:durationValue.doubleValue 
          delay:0 
         options:(curveValue.intValue << 16) 
        animations:^{ 
         self.toolBar.frame = CGRectMake(0, 
                 [endFrame CGRectValue].origin.y - self.toolBar.bounds.size.height+44, 
                 self.toolBar.bounds.size.width, 
                 self.toolBar.bounds.size.height); 
        } 
        completion:nil]; 
} 

- (void)keyboardWillHide:(NSNotification*)notification 
{ 
    NSDictionary* info = [notification userInfo]; 
    NSNumber *durationValue = info[UIKeyboardAnimationDurationUserInfoKey]; 
    NSNumber *curveValue = info[UIKeyboardAnimationCurveUserInfoKey]; 
    NSValue *endFrame = info[UIKeyboardFrameEndUserInfoKey]; 

    [UIView animateWithDuration:durationValue.doubleValue 
          delay:0 
         options:(curveValue.intValue << 16) 
        animations:^{ 
         self.toolBar.frame = CGRectMake(0, 
                 [endFrame CGRectValue].origin.y - self.toolBar.bounds.size.height, 
                 self.toolBar.bounds.size.width, 
                 self.toolBar.bounds.size.height); 
        } 
        completion:nil]; 
} 

क्या किसी के पास कोई सुराग या विचार है?

फिर मेरे ऐप WKWebView आधारित है, इसलिए सीधे कॉल करने या textviews की ओर निर्देशन, ध्यान केंद्रित करने में वेबव्यू व्यर्थ है कोशिश कर रहा।

किसी को भी कुछ और कोड की जरूरत है, बस मुझे सूचित करें। किसी भी मदद की सराहना की जाएगी। धन्यवाद।

1/20/18

UPDATED तो यहाँ संबंधित जहां के लिए और कैसे मेरे उपकरण पट्टी प्रारंभ और लोड हो जाता है का अनुरोध कोड है।

एच।

UIToolbar *toolBar; 
@property (nonatomic, strong) UIToolbar *toolBar; 

मीटर।

@synthesize toolBar; 

- (void)viewDidLoad { 
    //Toolbar setup 
    CGRect toolFrame, remain; 
    CGRectDivide(self.view.bounds, &toolFrame, &remain, 48, CGRectMaxYEdge); 
    self.toolBar = [[UIToolbar alloc] initWithFrame:toolFrame]; 
    [self.toolBar setBarStyle:UIBarStyleBlackTranslucent]; 
    [self.toolBar setClipsToBounds:YES]; 
    [self.toolBar setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin]; 
    [self.view addSubview:self.toolBar]; 
} 

इसके बारे में यही कारण है, अन्य तो कुछ यह ताज़ा करने के लिए जब मैं बटन स्विच बुला कोड, और कुछ नहीं इस उपकरण पट्टी से जुड़ा हुआ है।

जब तक कि मैं एक स्विच नल या यह ताज़ा करने के लिए उपयोगकर्ता पृष्ठभूमि, एक और दृश्य में NSUserDefaults के साथ निपटा बदल जाता है जब की जरूरत है यह कहा जाता है प्राप्त करता है।

-(void)viewWillLayoutSubviews{ 
    [self.currentScrollView layoutIfNeeded]; 
    [self.toolBar layoutIfNeeded]; 
    [self.view layoutSubviews]; 
} 
+0

यह अभी भी मेरे ऐप के साथ एक सतत मुद्दा है। – ChrisOSX

+0

आपने टूलबार और कैसे बनाया? – ChikabuZ

+0

ऐप लोड होने के बाद यह मेरे मुख्य दृश्य (viewDidLoad) में बनाया गया है। मैंने इसे एच फाइल में संपत्ति के साथ बनाया और फिर एम फाइल में संश्लेषित किया और इसे सबव्यू में जोड़ दिया। – ChrisOSX

उत्तर

0

तो नीचे मेरे लिए क्या काम कर रहा है।

मेरी AppDelegate.m में मैं सीधे शब्दों में endEditing:

- (void)applicationWillResignActive:(UIApplication *)application { 
    [self.window endEditing:YES]; 
} 

अब मेरी keyboardWillShow अधिसूचना में:

- (void)keyboardWillShow:(NSNotification*)notification 
{ 
    /////New added method////// 
    if([UIApplication sharedApplication].applicationState != UIApplicationStateActive){ 
     return; 
    } 


    NSDictionary* info = [notification userInfo]; 
    NSNumber *durationValue = info[UIKeyboardAnimationDurationUserInfoKey]; 
    NSNumber *curveValue = info[UIKeyboardAnimationCurveUserInfoKey]; 
    NSValue *endFrame = info[UIKeyboardFrameEndUserInfoKey]; 

    [UIView animateWithDuration:durationValue.doubleValue 
          delay:0 
         options:(curveValue.integerValue << 16) 
        animations:^{ 
         self.toolBar.frame = CGRectMake(0, 
                 [endFrame CGRectValue].origin.y - self.toolBar.bounds.size.height+44, 
                 self.toolBar.bounds.size.width, 
                 self.toolBar.bounds.size.height); 
        } 
        completion:nil];  
} 

कि यह था, सब के बाद इतना आसान कुछ। बस कीबोर्ड को छुपाएं, जैसे मैंने पहले किया था, और यह देखने के लिए जांच कर रहा था कि ऐप सक्रिय था या नहीं।

अब जब मैं नल घर दोगुना, कुंजीपटल छुपाता है। अगर मैं संदेशों जैसे किसी अन्य ऐप पर जाता हूं, कीबोर्ड को खींचता हूं, फिर से दो बार टैप करता हूं और अपने ऐप पर वापस जाता हूं, कीबोर्ड कभी नहीं चलेगा।मेरी समस्या हल करना

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