插入多个字符时关闭文本字段

Dyn*_*yna 5 objective-c uitextfield ios

我有一个文本字段,我想插入一个电话号码.问题是我使用数字键盘,没有任何输入键,我没有该键,我不知道如何关闭文本字段.

是否有任何方法可以检查文本字段中有多少个字符,并在有字符时关闭数字键盘?

对不起我的英语和抱歉的noob问题,但我刚开始与ObjC.

谢谢*

对不起伙计们,我忘了告诉你我已经尝试过了:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    if (textField.text.length== 9) {
         [textField resignFirstResponder];

    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)

Woo*_*ock 4

是的,我认为你有两个选择,你可以:

A. 检查委托方法 shouldChangeTextInRange 返回的字符数,然后如果达到限制,请退出第一响应者(当您退出第一响应者时,键盘将关闭,

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
    if ( textView.text.length + (text.length - range.length) == 10) //or whatever value you like
    {
        [textField resignFirstResponder];
    } 
}
Run Code Online (Sandbox Code Playgroud)

或乙:

重写视图的touchesEnded方法并调用resignFirstResponder,这样当用户触摸textField之外的视图时,键盘就会消失。- 这就是我在我的应用程序中所做的。

像这样:

只需将此方法添加到您的viewController中,当视图中的触摸结束时,它将自动调用,在该方法中您只需简单地resignFirstResponder,键盘就会消失。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    [textField resignFirstResponder];
}
Run Code Online (Sandbox Code Playgroud)

我认为最好在touchesEnded 中执行此操作,而不是在started 中执行此操作,当您将手指从视图中抬起时(而不是最初触摸它时)让键盘关闭“感觉”更好。