Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.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
Objective c UITableViewController和UITextField键盘_Objective C_Ios - Fatal编程技术网

Objective c UITableViewController和UITextField键盘

Objective c UITableViewController和UITextField键盘,objective-c,ios,Objective C,Ios,我有一个带有分组静态UITableView的UITableViewController。我正在为故事板上的静态表视图定义单元格。其中一个单元格中有一个文本字段。调用此文本字段时,会弹出键盘,但是,tableview不会像通常在table view控制器上那样自动调整大小。所以现在键盘部分覆盖了文本字段,我无法向上滚动 我的理解是,当您使用UITableViewController和tableview时,调用键盘时,可视区域应自动缩小。在我的应用程序的其他部分中,它确实可以正常工作,只是不能使用这

我有一个带有分组静态UITableView的UITableViewController。我正在为故事板上的静态表视图定义单元格。其中一个单元格中有一个文本字段。调用此文本字段时,会弹出键盘,但是,tableview不会像通常在table view控制器上那样自动调整大小。所以现在键盘部分覆盖了文本字段,我无法向上滚动

我的理解是,当您使用UITableViewController和tableview时,调用键盘时,可视区域应自动缩小。在我的应用程序的其他部分中,它确实可以正常工作,只是不能使用这个静态表视图。它不适用于静态表吗?我还缺什么吗?有没有简单的方法来解决这个问题


谢谢

如果选择其中一个表格进行编辑,则向上推送视图(需要键盘通知实现)

调整表格大小(将高度除以2)。将此切换到键盘并显示方法。此外,您还可以使用键盘隐藏方法撤消这些内容

CGRect temp = CGRectMake(mineTable.frame.origin.x, mineTable.frame.origin.y, mineTable.frame.size.width, mineTable.frame.size.height/2);
mineTable.frame = temp;

回答

它与静态单元无关。它们应该起作用

如果您的控制器已经是UITableViewController,请检查您是否使用了方法
viewwillbeen
。如果您这样做了,您必须调用
[超级视图将显示:是]
以使“自动行为”正常工作

-(void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:YES]; // This line is needed for the 'auto slide up'
   // Do other stuff
}
这个问题很容易出现,因为控制器的样板代码没有随
视图出现
方法调用一起出现,如果您在控制器中定义它,就会覆盖它

额外信息

看看这个链接

注意:UITableViewController在iOS 3.0中具有新功能。A. 表视图控制器支持表视图行的内联编辑;如果,, 例如,在编辑模式下,行具有嵌入的文本字段,因此 将正在编辑的行滚动到正在编辑的虚拟键盘上方 显示。。。。诸如此类

重要的一位

UITableViewController类通过以下方式实现上述行为 重写loadView、ViewWillDisplay:,以及从继承的其他方法 UIViewController。在UITableViewController的子类中,您可以 还重写这些方法以获得专门的行为。如果你这样做 如果要重写这些方法,请确保调用超类 方法的实现,通常作为第一个方法调用,以获取 默认行为

斯威夫特

override func viewWillAppear(animated: Bool) {

   super.viewWillAppear(animated)

}

您可以向上移动视图,也可以手动调整其大小。问题是,为什么它在正常情况下不会自动执行此操作?可能是因为您使用的是静态表视图(如您所猜测的)。静态表视图是专门为不改变而设计的——这就是为什么它们被称为“静态”的原因。关于如何做到这一点,有一个当前的、简单的答案吗?我已经看过了,大多数答案似乎不适用于表视图(主要是滚动视图)。正如您所知,
UITableView
继承自
UIScrollView
,因此您可以对它执行与对
UIScrollView
完全相同的操作。这是完整的答案吗?好像有些东西不见了。我不想给你看一些你已经知道如何编码的东西。我确实告诉过您要做什么(实现键盘通知)。这只是一些示例代码,为您指明了正确的方向。我在这里发布这篇文章后不久发现,它与静态表无关。我创建了一个测试静态表,它工作得很好,所以我知道它与我的代码有关。你是100%正确的。这是[超级视图:是];。只要我把它添加到我的视图中,它就会工作。我猜它是怎么被删除的。这周我一直在担心修理,结果发现真的很容易。感谢者。你的问题把我引向了医生,我学到了另一个好答案,可耻的是你没有更多的投票。“这是一个。”戈登多夫,谢谢。为了将来的读者,我把它写得更简洁一点。你是预言家!!?!?!一个该死的复制粘贴让我把super.viewwilldiscover放在viewwilldiscome中。多亏了你的建议,键盘的行为不像一个好公民。向上投票。
override func viewWillAppear(animated: Bool) {

   super.viewWillAppear(animated)

}