如何知道iOS中的UITextField是否有空格
我有一个UITextField,用户可以input名称并保存。 但是,用户不应该被允许在textFiled中input空格。
1 – 如何查找用户是否在textFiled中input了两个空格或完整的空格
2 – 我怎么知道,如果textFiled填充只有空格
编辑 – 只input空格(空格)是无效的
你可以“修剪”文本,即删除开始和结束的所有空白。 如果剩下的只是一个空string,那么只input空格(或空白)。
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. }
如果您想防止用户input空白,请参阅@ Hanon的解决scheme。
如果你真的想'限制'用户进入空格
你可以在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; } }
如果用户在字段中input空格,则当前文本中没有更改
使用下面的代码行
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 } }
UPD: 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 } }
我有一个不允许用户input空白字段的相同条件
这是我的代码和检查语句
- (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; }
Heres 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; } }
@ Hanon的回答是非常整齐的,但我需要的是至less允许1个空格,所以基于Hanon的解决scheme,我做了这个:
我声明了一个名为whitespaceCount的局部variables来保留空格的计数。 希望这有助于任何人!
- (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; } }
- 为什么自定义UIButton图像不能在Interface Builder中resize?
- 当select项目时,如何更改UITabItem的背景颜色
- SKStore审查控制器,如何以正确的方式使用它?
- Cognito身份validation工作但错误显示?
- 为什么self.locationManager stopUpdatingLocation不停止位置更新
- iOS核心animation:不正确的旋转锚点
- 如何在界面生成器中获取两个UITextView以在横向方向上正确alignment?
- 修补Manifest / Plist以使用不同平台特定的设置进行构build
- Xcode 6.3.2:仪器不断要求跟踪模板?