【问题标题】:Tell any UITextField to dismiss告诉任何 UITextField 关闭
【发布时间】:2011-01-31 14:28:52
【问题描述】:

如何将当前的firstResponder 告诉resign?我有一个UITableView 和一堆TextFields,我不知道哪个始终处于活动状态。我考虑过存储指向数组中所有单元格的指针并遍历它,将每个单元格告诉resignFirstResponder,但我确信有一种更简单的方法。也许像[CurrentFirstResponder resignFirstResponder] 这样的东西?

我会很感激你的帮助,法比安

编辑:我不想在用户点击完成时关闭键盘。它应该以编程方式被解雇。由于我不知道哪个UITextField 在任何时候都处于活动状态,因此我正在搜索当前FirstResponder 上调用resignFirstResponder 的东西。

【问题讨论】:

    标签: iphone objective-c uitableview uitextfield first-responder


    【解决方案1】:

    您可以在UITextFieldDelegate Protocol 上使用textFieldDidBeginEditing: 保留对正在积极编辑的 UITextfeild 的引用,或者您可以使用父视图执行此操作:

    UIView * myParentViewView;//view containing one or more editable UI controls 
    [myParentViewView endEditing:YES];
    

    【讨论】:

    • 刚才也想出来了 :) 问题是我的 UITextField 包含在自定义 UITableViewCell 中,但我添加了一个新的委托方法,将 - (void)textFieldDidBeginEditing:(UITextField *)tf 发送给委托。然后我有一个实例变量......
    【解决方案2】:

    希望这能解决你的问题,

    将委托分配给 UItextField,

    textField.delegate=self;
    

    然后在下面的方法中

        - (void)textFieldDidBeginEditing:(UITextField *)textField
        {
    //This for to resign on begin editing
        [textField resignFirstResponder];
        }
    
     - (void)textFieldDidEndEditing:(UITextField *)textField
        {
    //This for to resign on end editing
        [textField resignFirstResponder];
        }
    

    如果您不希望 textField 可编辑,那么,

    textField.editing=NO;
    

    设置标签以区分您的文本字段

    【讨论】:

      【解决方案3】:

      只需使用 UITextFieldDelegate (reference)。每当调用- (BOOL)textFieldShouldReturn:(UITextField *)textField 时,执行[textField resignFirstResponder],因为此方法总是使用当前活动的文本字段调用。 如果您仍然需要区分文本字段,请尝试设置标签并将其与 if(textfield.tag == self.mytextfield.tag) {...} 一起使用

      【讨论】:

        猜你喜欢
        • 2020-03-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-02-10
        • 2014-11-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多