objective-c/interface builderのUITextViewに単語の制限を適用する方法は可能ですか?UITextViewに単語の制限を適用する
私は
Canyの誰もが私に任意のポインタを与える...
objective-c/interface builderのUITextViewに単語の制限を適用する方法は可能ですか?UITextViewに単語の制限を適用する
私は
Canyの誰もが私に任意のポインタを与える...
あなただけのスペースの数をカウントし、制限することができます...しばらく探していると数える文字カウントではなく、単語を発見しましたそれ。それはハックですが、うまくいきます。
あなたはこれらの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つのスパで置き換えることで、テキストを最初に「修正」することもできます句読点の後にスペースを挿入します。これは、おそらく、入力テキストを呼び出す別の関数として記述する必要があります。
スペースを数える以外の別のアイデアは、5文字+ 1スペースの平均単語長を使用して単語数を決定することです。言い換えれば、合計文字数を6で割って、見積もりされた単語数を取得します。あなたがそれを100%正確にしていないのであれば、少し速くなります。
私は実際に句読点を考慮して6 + 1に設定しました。通常、正確な語数計算ルーチンは、最新のCPUのパフォーマンスにはほとんど影響しません。実際のプロジェクトでこの方法を使用する理由はわかりません。 –
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])];
あなたは私にそれを行うためのコードのアイデアを教えてください? – user559142
私はを含むクラスのインターフェイス宣言に追加する必要がありますか? –
user559142
@ user559142:含まれているクラスが 'UITextView'のデリゲートであることを確認してください。すべて設定する必要があります。 – PengOne