Iphone 如何知道iOS中的UITextField是否有空格
我有一个UITextField,用户可以在其中输入名称并保存它。但是,不应允许用户在文本字段中输入空格 1-如果用户在文本字段中输入了两个空格或完整的空格,我如何查找 2-我如何知道文本字段中是否只填充了空格Iphone 如何知道iOS中的UITextField是否有空格,iphone,ios,ipad,nsstring,uitextfield,Iphone,Ios,Ipad,Nsstring,Uitextfield,我有一个UITextField,用户可以在其中输入名称并保存它。但是,不应允许用户在文本字段中输入空格 1-如果用户在文本字段中输入了两个空格或完整的空格,我如何查找 2-我如何知道文本字段中是否只填充了空格 编辑-仅输入空格(空格)无效。使用以下代码行 NSString *str_test = @"Example "; NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet]; if([str_test ra
编辑-仅输入空格(空格)无效。使用以下代码行
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
}
}
您可以“修剪”文本,即删除开头和结尾处的所有空白。如果只剩下一个空字符串,则只输入了空格(或无)
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;
}
}
如果用户在字段中输入空格,则当前文本中没有任何变化@Hanon的答案非常简洁,但我需要的是至少允许1个空格,因此基于Hanon的解决方案,我制作了以下内容: 我声明了一个名为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;
}
}
我有一个相同的条件,不允许用户输入空白字段 这是我的代码和check语句
- (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;
}
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
}
}
下面是我使用
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;
}
}
这是Swift 3版本
let whitespaceSet = NSCharacterSet.whitespaces
let range = string.rangeOfCharacter(from: whitespaceSet)
if let _ = range {
return false
}
else {
return true
}
以迅捷的速度
如果要限制用户,可以使用contains()
比如说,
if userTextField.text!.contains(" "){
//your code here.....
}
这将找到任何空白(例如,在
“标题”
)中)。海报想知道字符串是否只是空白(例如“
)。感谢您的回答narayana。。。在发布问题之前,我尝试了这种方法,但没有成功+1对于您的回答,您需要澄清:用户是否完全不允许输入任何空格,或者只输入空格是无效的?也就是说,字符串“这是一个测试”
是否有效?哇。。这个很管用,伙计。。。好极了直截了当的回答。。。。。你为此得到了25分。15+10..... ;) 谢谢你,我从你的回答中学到了很多。(+1)如果你在if块之后/之外记录,为什么修剪后的字符串不能像预期的那样记录[NSString stringWithString:@“s p a c e”]呢?@Maudicus:Trimming的意思是只从开始和结束处删除。中间的任何空白都被保存。