2012-02-04 13 views
6

मैं समाधान ढूंढ रहा हूं और कोड का निम्नलिखित टुकड़ा पाया है। लेकिन मुझे नहीं पता कि दुर्भाग्य से इसका उपयोग कैसे किया जाए।मैं UITextView में वर्णों को कैसे सीमित करूं?

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
     NSUInteger newLength = [textField.text length] + [string length] - range.length; 
     return (newLength > 25) ? NO : YES; 
    } 

बस परीक्षण प्रयोजनों के लिए मैं एक IBACTION

-(IBAction)checkIfCorrectLength:(id)sender{ 
    [self textView:myTextView shouldChangeTextInRange: ?? replacementText: ?? ]; 

} 

क्या मैं shouldChangeTextInRange और replacementText के लिए पारित करते की स्थापना की? या क्या मैं इसे पूरी तरह गलत कर रहा हूं?

+1

यह एक प्रतिनिधिमंडल विधि है - UITextView और इसके प्रोटोकॉल के दस्तावेज़ पढ़ें। – Till

उत्तर

11

checkIfCorrectLength: से textView:shouldChangeTextInRange:replacementText: पर कॉल करना समझ में नहीं आता है। आप एक से अधिक तरीकों से लंबाई परीक्षण करना चाहते हैं, अपने स्वयं के विधि में बाहर परीक्षण कारक:

- (BOOL)isAcceptableTextLength:(NSUInteger)length { 
    return length <= 25; 
} 

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)string { 
    return [self isAcceptableTextLength:textField.text.length + string.length - range.length]; 
} 

-(IBAction)checkIfCorrectLength:(id)sender{ 
    if (![self isAcceptableTextLength:self.textField.text.length]) { 
     // do something to make text shorter 
    } 
} 
+0

धन्यवाद कि मेरे लिए काम किया :) –

1

आप इस विधि अपने आप को, पाठ दृश्य यह कहता है कि जब भी वह अपने पाठ को बदलने के लिए के बारे में है न बुलाया जाए। बस टेक्स्ट व्यू की delegate प्रॉपर्टी सेट करें (उदा। अपने व्यू कंट्रोलर पर) और वहां विधि को कार्यान्वित करें।

2

हाय मैंने यहां कोड पाया और संशोधित किया। तो xamarin उपयोगकर्ताओं के लिए। वर्तमान वस्तु पाठ को देखने के प्रतिनिधि है

textView.ShouldChangeText += delegate 
{ 
    if(textView.Text.Length > 159) // limit to one sms length 
    { 
     return false; 
    } 

    return true; 
} 
0

, तो आप निम्नलिखित स्निपेट का उपयोग कर सकते हैं:: निम्न प्रयास

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    return weightTextView.text.length + text.length - range.length < 7; 
} 

यह मेरे लिए काम किया।

0
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
if([text length] == 0) 
{ 
    if([textView.text length] != 0) 
    { 
     return YES; 
    } 
    else { 
     return NO; 
    } 
} 
else if([[textView text] length] > your limit value) 
{ 
    return NO; 
} 
return YES; 

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