2015-10-22 45 views
1

我有一個UITextField,我想爲它使用正則表達式。我想從UITextFieldDelegate使用UITextFieldDelegate「shouldChangeTextInRange」不叫

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

方法。

在我的XIB文件中,委託設置爲文件的所有者。在.h文件中,協議1設置爲 UIViewController<UITextFieldDelegate>

textFieldDidEndEditingtextFieldDidBeginEditing工作正常。

shouldChangeTextInRange不叫,但是爲什麼?

問候

回答

4

那是因爲你在UITextView,而不是UITextField實現委託。您應該實現:

- (BOOL)textField:(UITextField *)iTextField shouldChangeCharactersInRange:(NSRange)iRange replacementString:(NSString *)iString 
+0

是的你是對的。我沒有咖啡... – BHuelse

+1

: - )...發生了朋友!樂於助人,歡呼! – Abhinav

+0

您能否爲他人的利益接受這個答案? – Abhinav

0

您實現UITextViewDelegate方法,並嘗試委託它UITextField。嘗試一下;

Obj-C;

- (BOOL)textField:(UITextField *)iTextField shouldChangeCharactersInRange:(NSRange)iRange replacementString:(NSString *)iString 

Swift;

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool