Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使tableviewcell在显示键盘上向上滚动_Iphone_Xcode_Uitableview_Uitextfield - Fatal编程技术网

Iphone 使tableviewcell在显示键盘上向上滚动

Iphone 使tableviewcell在显示键盘上向上滚动,iphone,xcode,uitableview,uitextfield,Iphone,Xcode,Uitableview,Uitextfield,我有一个UITableViewCell和UITextField。在编辑模式下,当键盘打开时,我试图编辑的行被键盘重叠。理想情况下,行应该向上滚动,以便我可以编辑单元格 我彻底搜索了stackoverflow,找到了几种不同的解决方案。其中大多数都与向上移动或滚动视图的计算有关。现在有一个来自苹果的示例代码,名为TaggedLocations。他们有完全相同的行为。没有代码执行任何复杂的计算来向上移动视图 我还彻底检查了IB接口,也没有发现任何新奇的东西。如果您下载并运行代码,它会漂亮地将行推到一

我有一个UITableViewCell和UITextField。在编辑模式下,当键盘打开时,我试图编辑的行被键盘重叠。理想情况下,行应该向上滚动,以便我可以编辑单元格

我彻底搜索了stackoverflow,找到了几种不同的解决方案。其中大多数都与向上移动或滚动视图的计算有关。现在有一个来自苹果的示例代码,名为TaggedLocations。他们有完全相同的行为。没有代码执行任何复杂的计算来向上移动视图

我还彻底检查了IB接口,也没有发现任何新奇的东西。如果您下载并运行代码,它会漂亮地将行推到一个完美的编辑位置

有人知道TaggedLocations项目中有什么诀窍可以做到这一点吗?项目地点:

对于我所指的复杂计算,请查看以下线程:


谢谢

RootViewController.m中的这一行是导致滚动的原因:

[self.tableView scrollToRowAtIndexPath:indexPath atScrollPosition:UITableViewScrollPositionTop animated:YES];
把它放在你的
cellforrowatinexpath:
方法中,它应该会工作。

我解决了这个问题。 起初我有

TabBarController
-UIViewController
--UINavigationController
---UITableViewController

-UIViewController
--UINavigationController
---UITableViewController

在这种层次结构中,当显示键盘时,表格单元格不会向上滚动。但是,如果我将层次结构更改为以下内容,则无需任何额外代码即可进行汇总

TabBarController
-UINavigationController
--UITableViewController

-UINavigationController
--UITableViewController

当我复制苹果的代码时,我不知怎么搞砸了层次结构。现在切换到新的层次结构,它工作得很好。
无需额外代码或计算。

如果您有自己的控制器层次结构,则将显示调用视图。。。然后,当键盘出现时,表格视图将自动滚动单元格以显示出来。

我对Apple的示例代码标记位置也有类似的混淆,尽管在我的例子中,我意识到我的表格视图是由UIViewController子类而不是UITableViewController子类管理的,UITableViewController显然为您管理滚动。它工作得很好,所以很多复杂的计算是不必要的。我真希望我没有花那么多时间去弄清楚它们


我不明白你所描述的等级制度为什么重要。只要UITableViewController管理文本字段,它就会自动处理滚动以避免键盘。

我试过了。不是这样。这只适用于添加新事件。如果您看到,滚动也可以用于编辑。此外,标记选择也具有类似的行为,并且没有您提到的滚动代码。此外,它不在CellForRowatineXpath:方法中。很抱歉,
CellForRowatineXpath:
可能不是最好的方法。让类符合UITextFieldDelegate,然后在
textfieldDiBeginEdit
中以某种方式获取textfield所在行的索引路径,然后在该方法中调用上面的代码行,怎么样?我并没有真正深入研究苹果的代码,但“ScrollToRowatineXpath”似乎正是你想要的……抱歉,这不是正确的代码。它不起作用。即使你发表评论,你也会得到同样的行为。我有完全相同的问题,但是我有你提到的解决你问题的继承人。然而,我的问题仍然存在。你有没有遇到其他可能导致它发生的问题?谢谢。你的回答真的很有帮助。另外,如果您不能从层次结构中删除UIViewController,可以创建一个UINavigationController,将tableview控制器作为其根,并将导航控制器的视图作为子视图添加到VC中。希望它能帮助一些人!。