rangeOfString检测是否为“。”按了两次

时间:2012-03-04 19:28:25

标签: iphone nsstring

我是编程方面的新手,刚刚开始实现目标C.我创建了一个文本字段,我想在其中允许“。”只进入一次!根据我的理解,rangeOfString应该能够做到这一点。

-(IBAction)floatingPoint:(UIButton *) sender {

    NSString *floatingPoint = [sender currentTitle];
    NSRange range = [floatingPoint rangeOfString:@"."];

    if (range.location == NSNotFound) {
        self.display.text = 
            [self.display.text stringByAppendingString:floatingPoint];
    }
}

据我所知,代码floatingPoint rangeOfString:@“。”会检查“。”在currentTitle中,如果未找到,则应在此字符串后附加“。”

但是没有发生这种情况,没有输入小数点。如果我只输入
self.display.text = [self.display.text stringByAppendingString:floatingPoint];,则文本字段允许输入超过1个小数点。 对不起,如果我错误地描述了这个问题,我对所有这些东西都是新手,而这已经开始沉沦了。

2 个答案:

答案 0 :(得分:1)

另一种方法是将UITextField委托添加到.h,然后使用textField:shouldChangeCharactersInRange:replacementString: 检查字符串是否已包含.,如果有,则返回NO,如果不存在则返回YES

答案 1 :(得分:1)

您正在检查.的按钮标题。您可能在按钮中将按钮的标题设置为.,因此它当然总是包含.

您需要检查.的文本字段文本。试试这个:

NSRange range = [self.display.text rangeOfString:floatingPoint];