我有一个UITextField,用户可以在其中输入名称并保存。但是,不应允许用户在textFiled中输入空格。
1 - 如何找出用户是否在textFiled中输入了两个空格或填写空格
2 - 我怎么知道textFiled是否只填充空格
编辑 - 仅输入空格(空格)无效
答案 0 :(得分:97)
您可以“修剪”文本,即删除开头和结尾处的所有空格。如果剩下的只是一个空字符串,那么只输入空格(或没有)。
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的解决方案。
答案 1 :(得分:13)
如果你真的想“限制”用户输入空格
您可以在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;
}
}
如果用户在字段中输入空格,则当前文本
没有变化答案 2 :(得分:6)
使用以下代码行
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
}
}
答案 3 :(得分:3)
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
}
}
答案 4 :(得分:1)
我有一个相同的条件,不允许用户输入空白字段
这是我的代码和检查声明
- (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;
}
答案 5 :(得分:1)
Heres Swift 3版
let whitespaceSet = NSCharacterSet.whitespaces
let range = string.rangeOfCharacter(from: whitespaceSet)
if let _ = range {
return false
}
else {
return true
}
答案 6 :(得分:0)
我声明了一个名为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;
}
}
答案 7 :(得分:0)
以下是我使用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;
}
}
答案 8 :(得分:0)
在Swift中,
如果要限制用户,可以使用contains()
例如,
if userTextField.text!.contains(" "){
//your code here.....
}