【问题标题】:UIKeyboard appearing triggers a scroll event that then dismisses the keyboardUIKeyboard 出现触发滚动事件,然后关闭键盘
【发布时间】:2015-01-02 18:25:37
【问题描述】:

我遇到了一个我无法解决的奇怪问题。

我在 TableView 的 TableViewCell 中有一个文本字段。当我点击单元格时,会出现一个键盘。我有以下代码可以关闭所述键盘:

-(void) scrollViewDidScroll:(UIScrollView *)scrollView {
    [self findAndResignFirstResonder:self.view];
}

问题是,当 TextField 低于键盘顶部的位置时,TableView 会滚动以使其可见。这反过来会触发 scrollViewDidScroll 方法,然后关闭键盘。

【问题讨论】:

    标签: ios objective-c uitableview uiscrollview uikeyboard


    【解决方案1】:

    有道理——每次都会调用委托方法scrollViewDidScroll:。因此,如果您的scrollViewDidScroll: 关闭键盘,那么当应用程序自动调整(滚动)tableview 内容偏移量以考虑键盘时,它会自行关闭。

    您将希望以不同的方式实现键盘关闭。对于一种解决方案,将您的 UITableViewController 设为UITextFieldDelegate。然后,实现textFieldShouldReturn:,您可以在其中调用[textField resignFirstResponder][self.view endEditing:YES](有关详细信息,请参阅Managing the Keyboard (Apple))。

    我想你正在寻找的效果是,如果用户触摸 UITextField 或键盘之外的任何地方,键盘就会被关闭。为此,我将考虑实现touchesBegan:(如Techotopia 中所述)或使用UITapGestureRecognizer(如this post 中所述,请务必包含gestureRecognizer.cancelsTouchesInView = NO;,因为它建议在页面下方稍稍靠下)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-06
      • 2023-03-12
      • 1970-01-01
      • 2013-09-22
      • 2018-05-26
      • 1970-01-01
      • 2010-11-17
      • 1970-01-01
      相关资源
      最近更新 更多