【问题标题】:Dismissing keyboard on tapping outside the table在桌子外敲击时关闭键盘
【发布时间】:2013-02-25 07:11:15
【问题描述】:

在您将我的问题视为与此问题重复之前:iphone, dismiss keyboard when touching outside of UITextField 对我来说问题是我的文本字段是我的原型单元格的一部分,它有自己的 uitableview 单元格子类,所以我不确定在尝试辞职第一响应者时如何引用文本字段。所以,我不能这样做:

 -(void)dismissKeyboard {
   [aTextField resignFirstResponder];
}

我将如何克服这种情况?

谢谢

【问题讨论】:

  • 如果您将UITextField 属性添加到您的UITableViewCell 子类并将此属性连接到您在原型中创建的文本字段,则可以。
  • @Scott,我已经这样做了。我将如何引用它,因为这个关闭键盘是我的视图控制器类的一部分,而不是 uitableviewcell 子类。

标签: ios uitableview uikeyboard


【解决方案1】:

试试这段代码,很有用:

-(void)touchesBegan :(NSSet *)touches withEvent:(UIEvent *)event

{

    [aTextField resignFirstResponder];

    [super touchesBegan:touches withEvent:event];

}

【讨论】:

  • touchesBegan 对我不起作用,因为我的表格视图位于滚动视图中。
【解决方案2】:

我认为在表格视图单元格外点击时关闭键盘并不好。用户可能会不小心触摸到外部,或者他可以在输入文本时滚动,对吗?您可以使用UITextFieldDelegate 关闭键盘

- (BOOL)textFieldShouldReturn:(UITextField *)textField
 {
   [textField resignFirstResponder]
 }

【讨论】:

【解决方案3】:

如果我没听错的话,你想通过点击textfield 的外部来退出键盘,但你没有 textfield 的引用。

试试这个;

  • 获取全局文本字段,我们称之为reftextField
  • 现在在textFieldDidBeginEditing 中将引用的文本字段设置为

    - (void) textFieldDidBeginEditing:(UITextField *)textField{
        reftextField = textField;
    }
    
  • 现在您可以愉快地在任何按钮时钟上使用,(推荐在开始编辑时添加一个透明按钮)

    - (void)dismissKeyboard {
          [reftextField resignFirstResponder];
    }
    
  • 或者对于辞职完成按钮试试这个。

    //for resigning on done button    
    - (BOOL) textFieldShouldReturn:(UITextField *)textField{
        [textField resignFirstResponder];
        return YES;
    }
    

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 1970-01-01
    相关资源
    最近更新 更多