2012-02-04 10 views
6

私は解決策を探しており、次のコードを見つけました。しかし、私は残念ながら、それを使用する方法はわかりません。ちょうど私がIBACTIONUITextViewで文字を制限するにはどうすればよいですか?

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

} 

を設定し、テストのために

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

私はshouldChangeTextInRangereplacementTextのために渡しますか? それは完全に間違っていますか?

+1

これは委任方法です.UITextViewとそのプロトコルのドキュメントをお読みください。 – Till

答えて

11

textView:shouldChangeTextInRange:replacementText:checkIfCorrectLength:から呼び出しても意味がありません。あなたは複数の方法からの長さをテストしたい場合は、独自の方法に出てテストを考慮する:

- (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; 

} 
関連する問題