在 iOS 中关闭 UIImageView 后控件不会立即返回到 UITableView 中的第一行

Posted

技术标签:

【中文标题】在 iOS 中关闭 UIImageView 后控件不会立即返回到 UITableView 中的第一行【英文标题】:Control does not immediately return to first row in UITableView after dismissing UIImageView in iOS 【发布时间】:2013-09-03 21:46:43 【问题描述】:

我有一个 ios 应用程序,我在其中显示一个 UITableView,而 UITableView 又由由 UITextField 和 UILabel 组成的自定义行组成。在第一次启动时,我有一个覆盖 UITableView 的 UIImageView,直到用户按下按钮以关闭 UIImageView(从而显示它背后的 UITableView)。

但是,我的问题是,它不是将控制权返回给 UITableView 的第一行,而是选择 UITableView 的最后一行,最重要的是,尽管我明确调用了“becomeFirstResponder”方法,UITableView 的最后一行中的 UITextField 不允许我输入文本,直到我从表中明确选择一行。然后,只有这样我才能输入文本。我假设我的方法“cellForRowAtIndexPath”从上到下填充我的表格,这就是为什么选择表格的最后一行而不是顶部的原因(这是我的猜测,如果我错了,请纠正我)。

我想做的是在用户关闭 UIImageView 后启用 UITableView 的第一行并使其自动成为“firstResponder”,从而允许用户立即输入文本而无需显式选择特定行.

按下按钮后关闭 UIImageView 的代码如下:

- (IBAction)beginDataEntry:(id)sender 
    
    [_imageView removeFromSuperview];
    [_cell.dataField becomeFirstResponder];
    
 

在我从表中明确选择一行之前,我的 UITableView 就好像处于“边缘”状态。我做错了什么?

【问题讨论】:

您能否添加更多代码,例如您是如何创建表格视图的? 我在 Interface Builder 中创建了我的 UITableView。 【参考方案1】:

使用 UITableView scrollToRowAtIndexPath:atScrollPosition:animated: 在重新显示视图时显示正确的行。

使用索引路径来引用表格行总是比保留对单元格的引用更安全。所以,这里有一个替代方案:

- (IBAction)beginTireCountEntry:(id)sender 

    [_imageView removeFromSuperview];
    NSIndexPath firstCellPath = [NSIndexPath indexPathForRow:0 inSection:0];
     [self.tableView scrollToRowAtIndexPath: firstCellPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
    MyCell cell = (MyCell *)[self.tableView cellForRowAtIndexPath:firstCellPath];
    [cell.dataField becomeFirstResponder];

 

【讨论】:

以上是关于在 iOS 中关闭 UIImageView 后控件不会立即返回到 UITableView 中的第一行的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 对齐在初始显示时在 tableview 单元格中关闭,但之后没有

在 iOS 7 SDK 中关闭 UIAlertview 后 UIView 没有响应

如何在导航控件片段中关闭导航 DrawerLayout onBackPressed

在 WPF Frame 控件中关闭导航页面声音

在 login.aspx 之外的 iframe 中关闭登录控件

UIAlertController:它不会在一个控件中关闭一个UICollectionView