2011-12-12 9 views
12

मुझे एक TextView मिल गया है जो एक बटन प्रेस पर दिखाना है, और उपयोगकर्ता को कीबोर्ड के माध्यम से टेक्स्ट दर्ज करने दें।परेशानी की शूटिंग बन गई है फर्स्ट रेस्पॉन्डर कुछ उपयोगकर्ताओं के लिए कीबोर्ड नहीं दिखा रहा है

- (IBAction) changeName { 

    changeNameBtn.hidden = YES; 
    backBtn.hidden = YES; 

    usernameLabel.hidden = NO; 
    inputTextField.hidden = NO; 
    [inputTextField becomeFirstResponder]; // to show keyboard 
} 

यह हमारे अधिकांश के लिए ठीक काम करता है।

लेकिन कीबोर्ड भौगोलिक दृष्टि से दूरस्थ स्थान पर मेरे कुछ परीक्षकों के लिए नहीं दिखाता है। इसे शूट करने में कैसे परेशानी है? और हमारे उपकरणों के विभिन्न व्यवहार का कारण क्या हो सकता है? यह मेरे और हर किसी के लिए ठीक काम करता है। हम सभी एक ही डिवाइस (आईपॉड, आईओएस 4.1 - 5.1) का उपयोग करते हैं।

पहली बात मैंने कोशिश की काम नहीं किया:

मैं अनुमान लगाया है कि inputTextField में किसी तरह समय में दिखाई नहीं हो जाते हैं, इससे पहले कि becomeFirstResponder निकाल दिया गया था था, इसलिए के रूप में मैंने सोचा था कि एक अद्यतन मजबूर होना पड़ा रहा setNeedsDisplay जोड़ा ।

[inputTextField setNeedsDisplay]; 
[inputTextField becomeFirstResponder]; 

दूसरा बात मैंने कोशिश की काम नहीं किया:

if([inputTextField canBecomeFirstResponder]){ 
    [inputTextField becomeFirstResponder]; 
} 

तीसरा बात मैंने कोशिश की एक समाधान नहीं है, क्षेत्र प्रेस करने अशुभ उपयोगकर्ता की आवश्यकता होती है:

- (IBAction) inputTextFieldTouch { 
    [inputTextField becomeFirstResponder]; 
} 

यह कामकाज काम करता है, लेकिन एक बेहतर तरीका होना चाहिए। कृपया मुझे बताएं कि मैं क्या गलत कर रहा हूं! :) और इस तरह के मुद्दों को कैसे डुप्लिकेट करने में सक्षम होने के बिना कैसे पहुंचे?

उत्तर

9

TextView बार जब आप इसे पहले प्रत्युत्तर बनाने की कोशिश द्वारा तैयार किया जा रहा समाप्त नहीं हुआ है।

आप उपस्थिति एनिमेट और पूरा ब्लॉक में पहली प्रत्युत्तर सेट करने का प्रयास कर सकते हैं।

[UIView animateWithDuration:0.0 animations:^{ 
    [view addSubview:textView]; 
} completion:^(BOOL finished){ 
    [textView becomeFirstResponder]; 
}]; 
0

प्रयास करें देखने के लिए अगर आप कीबोर्ड पहले दिखा सकते हैं:

if([inputTextField canBecomeFirstResponder]){ 
    [inputTextField becomeFirstResponder]; 
} 
26

मैं becomeFirstResponder बाद में इस लाइन द्वारा कहा जाता है:

[self.searchBar performSelector:@selector(becomeFirstResponder) 
        withObject:nil 
        afterDelay:0.1f]; 

यह मेरे लिए काम किया। उममीद है कि इससे मदद मिलेगी।

+0

वास्तव में उत्तर से बेहतर काम करता है, जो सही चिह्नित है। –

+0

बेहतर, कैसे, इलिया? – JOG

4

iOS8 के रूप में, एक UITextView पर becomeFirstResponder बुला आईओएस सिम्युलेटर पर मेरे लिए कुंजीपटल प्रदर्शित नहीं करता है, लेकिन यह वास्तविक डिवाइस पर करता है। तो इसे एक वास्तविक डिवाइस से जांचना सुनिश्चित करें। हालांकि यह आईओएस 7 पर नहीं होता है।

+8

क्या आपने अपने कंप्यूटर के कीबोर्ड का उपयोग करने के लिए सीएमडी + शिफ्ट + के दबाए हैं? यह मेरे लिए सिम्युलेटर के कीबोर्ड को दिखाता है और छुपाता है। – chedabob

+0

मेरे सभी परीक्षक वास्तविक डिवाइस का उपयोग करते हैं, जिनमें से कीबोर्ड को नहीं दिखाया गया था। जैसा कि सवाल बताता है, "हम सभी एक ही डिवाइस (आईपॉड, आईओएस 4.1 - 5.1) का उपयोग करते हैं"। – JOG

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

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