shouldChangeCharactersInRange没有被调用。

时间:2016-11-18 12:23:01

标签: ios objective-c uitextfield

我有必须调用的方法来检查手机号码范围和其他格式。但这种方法没有被称为:(

-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
    ProfileBasicCell *cell=[_tblView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]];
    if (cell.txtMobile.text== textField && string.length>0) {
        NSString *newText=[textField.text stringByReplacingCharactersInRange:range withString:string];
        if (newText.length<=15) {
            if (newText.length==4 || newText.length==8) {
               textField.text=[newText stringByAppendingString:@"-"];
               return NO;
             }
        return YES;
    } else {
        return NO;
    }  
   }
   return YES;
}

3 个答案:

答案 0 :(得分:3)

您是否设置了代理?

class yourViewController: UITextFieldDelegate {

}

self.yourTextField.delegate = self;

答案 1 :(得分:0)

你需要像这样在你的控制器中设置UITextFieldDelegate

class yourViewController: UITextFieldDelegate {

}

然后你需要像这样给你的UITextfield代表

yourTextfield.delegate = self

答案 2 :(得分:0)

您需要设置委托。有两种方法:

  
      
  1. 通过故事板设置
  2.   

要通过故事板进行设置,请右键单击文本字段,然后将delegate拖到View Controller

  
      
  1. 以编程方式设置
  2.   

UITextFieldDelegate添加到视图控制器,并为您的文本字段设置委托。这样的事情:self.textField.delegate = self;