ユーザーが名前を入力して保存できるUITextFieldがあります。ただし、textFiledに空白スペースを入力することは許可されません。
1-ユーザーがtextFiledに2つの空白スペースを入力したか、完全な空白スペースを入力したかどうかを確認するにはどうすればよいですか
2-textFiledに空白のみが入力されているかどうかを知る方法
編集-空白(空白)のみを入力することは無効です
テキストを「トリム」することができます。つまり、最初と最後の空白をすべて削除します。残っているすべてが空の文字列の場合、空白のみ(または何も入力されていません)が入力されました。
NSString *rawString = [textField text];
NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmed = [rawString stringByTrimmingCharactersInSet:whitespace];
if ([trimmed length] == 0) {
// Text was empty or only whitespace.
}
空白(テキスト内の任意の場所)があるかどうかを確認する場合は、次のように実行できます。
NSRange range = [rawString rangeOfCharacterFromSet:whitespace];
if (range.location != NSNotFound) {
// There is whitespace.
}
ユーザーが空白文字をまったく入力できないようにする場合は、@ Hanonのソリューションを参照してください。
ユーザーが空白文字の入力を「制限」したい場合
あなたはUITextFieldDelegateで次のメソッドを実装できます
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string];
NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
if ([resultingString rangeOfCharacterFromSet:whitespaceSet].location == NSNotFound) {
return YES;
} else {
return NO;
}
}
ユーザーがフィールドにスペースを入力した場合、現在のテキストに変更はありません
次のコード行を使用
NSString *str_test = @"Example ";
NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
if([str_test rangeOfCharacterFromSet:whitespaceSet].location!=NSNotFound)
{
NSLog(@"Found");
}
コードの下でユーザーの使用を制限したい場合
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if([string isEqualToString:@" "])
{
return NO
}
else
{
return YES
}
}
PD: Swift 2.0サポート
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let whitespaceSet = NSCharacterSet.whitespaceCharacterSet()
let range = string.rangeOfCharacterFromSet(whitespaceSet)
if let _ = range {
return false
}
else {
return true
}
}
ユーザーが空白フィールドを入力できない同じ条件がありました
これが私のコードとチェックステートメントです
- (IBAction)acceptButtonClicked:(UIButton *)sender {
if ([self textFieldBlankorNot:fullNametext]) {
fullNametext.text=@"na";
}
// saving value to dictionary and sending to server
}
-(BOOL)textFieldBlankorNot:(UITextField *)textfield{
NSString *rawString = [textfield text];
NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmed = [rawString stringByTrimmingCharactersInSet:whitespace];
if ([trimmed length] == 0)
return YES;
else
return NO;
}
ヘレスSwift 3バージョン
let whitespaceSet = NSCharacterSet.whitespaces
let range = string.rangeOfCharacter(from: whitespaceSet)
if let _ = range {
return false
}
else {
return true
}
これがstringByReplacingOccurrencesOfString
を使って行ったことです。
- (BOOL)validateFields
{
NSString *temp = [textField.text stringByReplacingOccurrencesOfString:@" "
withString:@""
options:NSLiteralSearch
range:NSMakeRange(0, textField.text.length)];
if ([temp length] == 0) {
// Alert view with message @"Please enter something."
return NO;
}
}
@ハノンの答えはかなりきちんとしていますが、私が必要だったのは、少なくとも1つの空白を許可することでした。そのため、ハノンの解決策に基づいて、これを作成しました。
空白の数を保持するために、whitespaceCountというローカル変数を宣言しました。これが誰にも役立つことを願っています!
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
if ([string rangeOfCharacterFromSet:whitespaceSet].location != NSNotFound)
{
whitespaceCount++;
if (whitespaceCount > 1)
{
return NO;
}
}
else
{
whitespaceCount = 0;
return YES;
}
}