UITextviewデリゲート- (BOOL)textView:(UITextView *)textView
が呼び出されることは決してありません。私は数日間無駄にこれを苦労しています。ここで私は、私は、デリゲートを設定しています私のヘッダファイルとのviewDidLoadで<UITextViewDelegate>
をUITextViewデリゲートは一度も呼び出されていません
を宣言していたものですが、私はNIBファイルにデリゲートをアップ配線の代わりに、プログラム的にそれを宣言するとともに、self.myTextView.delegate = self;
とmyTextView.delegate = self;
を試してみました。
私はボタンに応じて、2種類の方法で私UITextViewにテキストを挿入し、いくつかのカスタムボタンを持って、ここでは第1の方法は...
-(IBAction)string1:(id)sender {
NSRange range = myTextView.selectedRange;
NSString * firstHalfString = [myTextView.text substringToIndex:range.location];
NSString * secondHalfString = [myTextView.text substringFromIndex: range.location];
myTextView.scrollEnabled = NO;
NSString * insertingString = [NSString stringWithFormat:@"insert my text string"];
myTextView.text = [NSString stringWithFormat: @"%@%@%@",
firstHalfString,
insertingString,
secondHalfString];
range.location += [insertingString length];
myTextView.selectedRange = range;
myTextView.scrollEnabled = YES;}
で、第2の方法はある...
NSLogで-(IBAction)string2:(id)sender {
myTextView.text = [myTextView.text stringByAppendingString:@"my other string value"];}
は私が
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"something changed");}
が呼び出さないことを確認することができ、オンが、このD elegateは、私はすべてのヘルプは非常に高く評価されるだろう#define MAX_LENGTH 100
を定義している私の.mファイルの先頭で
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {
NSUInteger newLength = (textView.text.length - range.length) + text.length;
if(newLength <= MAX_LENGTH)
{
return YES;
} else {
NSUInteger emptySpace = MAX_LENGTH - (textView.text.length - range.length);
textView.text = [[[textView.text substringToIndex:range.location]
stringByAppendingString:[text substringToIndex:emptySpace]]
stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]];
return NO;
}
NSLog(@"something else changed");}
と呼ばれることは決してありません、私の全体的な目標は、UITextViewでのチャーターの数を制限することです。
最初の注記では、 'if'と' else'の両方がそこに着く前に 'return'を実行するので、' NSLog(@ "something else changed"); 'は表示されません。 :-) –
はい、私はそれを知っています、私は返品前にロギングを持っていましたが、まだ運がありません。 – Dan