UITableViewController - 视图改变大小时的事件?

时间:2011-10-13 15:52:45

标签: iphone ios uitableview

当键盘出现时,UITableViewController会更改tableview。我希望细胞留在原处;默认行为是视图简单缩小,顶部单元格保持原样。 我宁愿让底部单元留在可见按钮上。

我能想到两种方法:

  • 我可以告诉tableview从顶部缩小而不是从底部收缩吗?
  • 我可以截取大小的变化吗?在这种情况下,我可以调用scroll方法滚动到底部。
编辑:我似乎不太清楚。 UITableView实际上已调整大小。 (似乎是UITableViewController的一个功能。我遇到的问题是包含UIScrollView的{​​{1}} UITableView的行为。听取UITableViewCell和类似的事件只是为了重新定位滚动位置感觉就像用大炮射击麻雀。

2 个答案:

答案 0 :(得分:1)

是。如果它不提供您想要的行为,请停止使用UITableViewController。相反,只需创建一个带有UITableView属性的UIViewController子类,监听键盘通知,然后根据需要做出响应;将insets添加到表视图并滚动以保持单元格可见。

答案 1 :(得分:0)

您可以控制如何调整tableview的大小和/或滚动UIKeyboardDidShowNotification中的单元格。因此,您首先必须制作UITableViewController 观察以下两个Notifications(不确定TableViewControllers是否有必要):

 [[NSNotificationCenter defaultCenter] addObserver:self
        selector:@selector(keyboardWasShown:)
        name:UIKeyboardDidShowNotification object:nil];

 [[NSNotificationCenter defaultCenter] addObserver:self
         selector:@selector(keyboardWillBeHidden:)
         name:UIKeyboardWillHideNotification object:nil];

您可以在viewDidLoad方法中执行此操作。然后你必须编写一些代码来做你想要的。作为一个起点,我建议您使用Apple“Text,Web和编辑iOS编程指南”中Moving Content That Is Located Under the Keyboard的代码片段。