在 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