限制UITextField上的删除

时间:2014-11-19 06:20:23

标签: ios nsstring uitextfield restriction

我有一个UITextField,其文字如+91-(印度的国家来电代码)。现在,当我的用户将他的号码输入到该文本字段中时,它看起来像这样,+91-1234567890很好,现在当他点击(x)从键盘删除键时,我想限制删除,它唯一可能最多,1(他的手机号码的第一位数字),无论如何,他都不能删除+91-。我可以使用- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;委托,像这样,

1)第一种方式:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([string isEqualToString:@""]) { //detect back space
        if([textField.text hasSuffix:@"-"]) { //has suffix `-`
            return NO;
        }
    }
}

2)第二种方式:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    //if text length is length of caller code and detect back space
    if(textField.text.length<=4 && [string isEqualToString:@""]) {
        return NO;
    }

    return YES;
}

在这两种方式中,我得到了我想要的东西,但不确定它的正确与否?还有更顺畅的方式吗?

2 个答案:

答案 0 :(得分:1)

为什么你不像简单的方法那样尝试在UIView

的前缀中添加一个UItextfield

enter image description here

答案 1 :(得分:1)

您只需在用户实际输入号码的UILabel之前显示不可编辑的UITextField即可。当您从用户那里获得输入并想要处理它时,前缀为&#34; +91 - &#34;在用户输入字符串之前