2011-08-11 12 views

答えて

6

あなただけのスペースの数をカウントし、制限することができます...しばらく探していると数える文字カウントではなく、単語を発見しましたそれ。それはハックですが、うまくいきます。

あなたはこれらのNSStringのいずれかの方法を使用して

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText 

の内側にこれを行うことができます

- (NSArray *)componentsSeparatedByCharactersInSet:(NSCharacterSet *)separator 
- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement 

たとえば、あなたはこれらの線に沿って何かを行うことができます:

- (BOOL)textView:(UITextView *)aTextView shouldChangeTextInRange:(NSRange)aRange replacementText:(NSString*)aText { 
     NSString* newText = [aTextView.text stringByReplacingCharactersInRange:aRange withString:aText]; 
     NSString *trimmedText = [newText stringByReplacingOccurrencesOfString:@" " withString:@""]; 

     if (newText.length - trimmedText.length > wordLimit) { 
      return NO; 
     } else { 
      return YES; 
     } 
} 

あなたの場合より正確になりたい場合は、複数のスペースを1つのスパで置き換えることで、テキストを最初に「修正」することもできます句読点の後にスペースを挿入します。これは、おそらく、入力テキストを呼び出す別の関数として記述する必要があります。

+0

あなたは私にそれを行うためのコードのアイデアを教えてください? – user559142

+0

私はを含むクラスのインターフェイス宣言に追加する必要がありますか? – user559142

+0

@ user559142:含まれているクラスが 'UITextView'のデリゲートであることを確認してください。すべて設定する必要があります。 – PengOne

0

スペースを数える以外の別のアイデアは、5文字+ 1スペースの平均単語長を使用して単語数を決定することです。言い換えれば、合計文字数を6で割って、見積もりされた単語数を取得します。あなたがそれを100%正確にしていないのであれば、少し速くなります。

+0

私は実際に句読点を考慮して6 + 1に設定しました。通常、正確な語数計算ルーチンは、最新のCPUのパフォーマンスにはほとんど影響しません。実際のプロジェクトでこの方法を使用する理由はわかりません。 –

2

iOS 4.0以降を使用している場合は、NSRegularExpressionを使用してより良い結果を得ることができます。私はこれを試していませんが、次のようなものが近いはずです:

NSError *error = NULL; 
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\w+" 
                     options:0 
                     error:&error]; 
NSUInteger wordCount = [regex numberOfMatchesInString:string 
               options:0 
               range:NSMakeRange(0, [string length])]; 
関連する問題