2016-11-18 133 views
1

我有必须调用检查手机号码范围和其他格式的方法。但是这种方法不会被调用:(shouldChangeCharactersInRange没有被调用。?

-(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; 
} 
+2

检查您的文本字段是否包含委托集? – jokerday

+0

[cell.txtMobile setDelegate:<#(id _Nullable)#>]; 我应该在<<#(id _Nullable)#>中输入什么表达式 @deyanlai –

回答

2

难道u盘委托?

class yourViewController: UITextFieldDelegate { 

} 

self.yourTextField.delegate = self; 
0

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

class yourViewController: UITextFieldDelegate { 

} 

,那么你需要以这种方式给你的UITextfield代表

yourTextfield.delegate = self 
0

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

  1. 设置它通过分镜

要设置通过故事板,右键点击文本框,然后拖动delegateView Controller

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

    +0

    我认为文本字段没有数据源。 – Adeel

    +0

    哦,是的,没错。我会编辑我的答案 – Munahil

    +0

    哦,是的,没错。我会编辑我的答案 – Munahil