2011-12-14 14 views
7

की पुष्टि करें यह असंभव प्रतीत होता है, लेकिन हो सकता है कि किसी और को भी वही समस्या हो।यूआईटीएक्स्टव्यू ऑटो-पूर्ण

क्या मेरे लिए प्रोग्रामिक रूप से स्वत: पूर्ण रूप से स्वीकार करना संभव है, या किसी भी तरह से सुझाए गए सुझाए गए शब्द को प्राप्त करें? मेरी समस्या यह है कि मैं रिटर्न/बैकस्पेस कीस्ट्रोक को कैप्चर कर रहा हूं और फिर फोकस को दूसरे टेक्स्टव्यू पर ले जाउंगा। जब प्रवेश/बैकस्पेस मारा जाता है, तो टेक्स्टव्यू ऑटो-सुझाए गए शब्द को अनदेखा कर देगा। ऐसा लगता है कि हिट स्पेस/डॉट (और नई पंक्ति के लिए वापसी) द्वारा स्वत: पूर्णता स्वीकार करना संभव है। इस कोड के साथ:

- (BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
           replacementText:(NSString *)text { 
    NSRange textViewRange = [textView selectedRange]; 

    // Handle newrow and backspace. 
    if(([text length] == 0) && (textViewRange.location== 0) && textViewRange.length==0){ 
     // BACKSPACE KEYSTROKE 
     [delegate doSomethingWhenBackspace]; 
     return NO;  
    }else if ([text isEqualToString:@"\n"]){  
     // RETURN KEYSTROKE 
     [delegate doSomethingWhenReturn];  
     return NO;  
    } 

    return YES; 
} 

मैं प्रोग्राम के रूप में "अंतरिक्ष" जोड़ने के लिए जब वापस कुंजी मारा है, लेकिन वह भी स्वत: पूर्ण शब्द पर ध्यान नहीं देता की कोशिश की।

else if ([text isEqualToString:@"\n"]){ 
       // Tryin to accept autocomplete with no result. 
       textview.text = [textview.text stringByAppendingString:@" "]; 
      // RETURN KEYSTROKE 
      [delegate doSomethingWhenReturn];  
      return NO;  
     } 

कोई सुझाव?

उत्तर

-3

मुझे एक बहुत ही समस्या है, मैं एक ऐसा ऐप बना रहा था जिसे टेक्स्ट लुक में प्रत्येक अक्षर पढ़ना पड़ा और मेरे पास समस्याएं हैं जब स्वत: पूर्ण शब्दों को सम्मिलित किया गया क्योंकि यह इसे सहेज रहा था जैसे कि यह एक पत्र था। आप प्रत्येक वर्ण को सरणी में जोड़ सकते हैं और फिर यह देखने के लिए जांच सकते हैं कि कोई भी 1 स्ट्रिंग लंबाई में है या नहीं। या फिर आप प्रत्येक चरित्र है कि एक सरणी में में डाल दिया जाता है जोड़ सकता है और उसके बाद अलग-अलग हर किरदार को जोड़ने के लिए, दो सरणियों की तुलना आप यह समझ सकते हैं अगर स्वत: सुधार इस्तेमाल किया गया है और साथ क्या शब्द/s

NSString *string = text; 
NSMutableArray *array = [NSMutableArray new]; 
for (int i=0; i<string.length; i++) { 
[array addObject:[string substringWithRange:NSMakeRange(i, 1)]]; 
} 

की तरह कुछ चलाने । आशा है कि इससे मदद मिलेगी।

+0

यह इसे पूरा करने के लिए वास्तव में एक भयानक तरीका है। UIKit आपके लिए स्वत: पूर्ण कार्य करने के बजाय 'UITextView' /' UITextField' की 'firstResponder' गुणों को बदलें। – cbowns

0

बैकस्पेस और अंतरिक्ष के लिए यू इस हालत का उपयोग कर सकते

if ([[text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]] length]==0) 
{  
[delegate doSomethingWhenBackspace];  
return NO;  
} 
4

कॉल -resignFirstResponder (यानी [textView resignFirstResponder]) पाठ दृश्य या टेक्स्ट फ़ील्ड जो स्वत: पूर्ण परिणामों को स्वीकार करने की जरूरत है पर: UIKit .text बदल जाएगा स्वत: सुधारित पाठ शामिल करने के लिए संपत्ति।

आप कीबोर्ड रखने के लिए अपना पहला दृश्य पहले प्रत्युत्तर इस्तीफा के बाद चाहते हैं, [anotherTextView becomeFirstResponder] के साथ अपने अगले पाठ इनपुट दृश्य पर firstResponder जिम्मेदारी गुजरती हैं।