2

仅当弹出框控制器出现键盘时,模型表视图(UITableViewController)不滚动表的任何原因?

我基本上有一个带有按钮的弹出菜单,该按钮可以全屏打开模型 Tableview,点击时,表格底部行内的文本字段会被键盘隐藏。

这与您必须手动管理滚动的 UIView 或 Scrollview 不同。UITableViewController 内置了这个功能,如果在层次结构的某个地方有一个弹出控制器,它就不起作用。

示例项目:www.geoffcoope.co.uk/ios/testTVCScrolling.zip

谢谢杰夫

4

2 回答 2

1

您的 UITableView 正在将其委托方法请求发送到弹出框的视图控制器而不是您的 UITableView 控制器,或者您的 UITableView 的委托设置为 nil。查看您在哪里实例化 TableView 并确保您正确设置了委托属性。

于 2012-07-03T19:35:47.497 回答
1

我想您的问题在于情节提要的 segue 显示弹出框控制器的方式。看起来这是一个普遍的问题。

因此,解决它的最简单方法是将模态窗口的创建移动到代码中。像这样的东西:

在你的ViewController.h写作中

@property (strong) UIPopoverController * popoverController;
- (void) showNavigationController;

在你的ViewController.m写作中

@synthesize popoverController;

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    [super prepareForSegue:segue sender:sender];
    if ([segue isKindOfClass:[UIStoryboardPopoverSegue class]]){
        if (popoverController) [popoverController dismissPopoverAnimated:NO];
        UIStoryboardPopoverSegue * popoverSegue = (UIStoryboardPopoverSegue *) segue;
        popoverController = popoverSegue.popoverController;
    }
}

- (void) showNavigationController
{
    [popoverController dismissPopoverAnimated:NO];
    popoverController = nil;

    UIStoryboard *ub = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];

    UIViewController *controller = [ub instantiateViewControllerWithIdentifier:@"navigationController"];
    [self presentModalViewController:controller animated:YES];
}

然后在您的 MainStoryboard 中navigationController为您的导航控制器设置标识符,而不是在“显示表”按钮上设置一个“内部修饰”代表。该委托将执行您的showNavigationController方法ViewController(使用 a NSNotificationCenter,例如)

于 2012-07-08T21:22:11.380 回答