【问题标题】:How to hide Textbox Keyboard when "Done / Return" Button is pressed Xcode 4.2按下“完成/返回”按钮时如何隐藏文本框键盘 Xcode 4.2
【发布时间】:2012-06-13 11:42:09
【问题描述】:

我在 Interface Builder 中创建了一个文本字段。我将它的“返回键”设置为完成。这是一个单行输入(因此不需要多行)。

当用户点击完成按钮时如何隐藏虚拟键盘?

【问题讨论】:

    标签: iphone ios xcode4.2


    【解决方案1】:

    实现委托方法UITextFieldDelegate,然后:

    - (void)viewDidLoad {
        [super viewDidLoad];
        self.yourIBtextField.delegate = self;
    }
    
    - (BOOL)textFieldShouldReturn:(UITextField *)textField {
        [textField resignFirstResponder];
        return NO;
    }
    

    【讨论】:

    • 我缺少的部分是将 添加到 *.h 文件中的界面。一旦我添加了它,这段代码就可以毫无问题地工作。希望对其他人有所帮助!
    • 在这种情况下 是必需的。
    • 如果您将连接从 textField 拖到 viewController 表示,您也可以从情节提要 (xib) 连接委托。这样您就不必从 viewDidLoad 方法中编写该行。
    【解决方案2】:

    UITextView 没有任何在用户点击返回键时会被调用的方法。

    即便如此,如果您想这样做,请实现 UITextViewDelegate 的 textView:shouldChangeTextInRange:replacementText: 方法,并在其中检查替换文本是否为 \n,隐藏键盘。

    可能还有其他方法,但我不知道。

    确保声明支持 UITextViewDelegate 协议。

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range 
    replacementText:(NSString *)text {
    
        if([text isEqualToString:@"\n"]) {
            [textView resignFirstResponder];
            return NO;
        }
        return YES;
    }
    

    【讨论】:

    • 这会出于某种原因重置我的隐藏设置。知道为什么吗?
    • 能否提供更多细节,比如哪种隐藏设置??
    【解决方案3】:

    使用 next 方法在 UIViewController 上创建类别

    - (void)hideKeyboard
    {
        [[UIApplication sharedApplication] sendAction:@selector(resignFirstResponder)
                                                   to:nil
                                                 from:nil
                                             forEvent:nil];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-23
      • 2014-12-26
      • 2017-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      相关资源
      最近更新 更多