【问题标题】:UITableView didSelectRowAtIndexPath Not Selected on UIPageViewControllerUIPageViewController 上未选择 UITableView didSelectRowAtIndexPath
【发布时间】:2013-03-13 21:32:58
【问题描述】:

我有一个 UIViewController,其中添加了 UIPageViewController 的视图。该 UIPageViewController 有一个带有子视图的页面,该子视图将 UITableView 添加为子视图。我正在使用 iOS 6,单击单元格时没有调用方法 didSelectRowAtIndexPath。但是有一个奇怪的“错误”......如果我将页面翻到一半然后回到我所在的页面(没有完成翻页),那么我就可以选择单元格。我认为这与手势识别器有关,但我无法弄清楚。我尝试从 UIPageViewController 的实例化中删除手势识别器,但无法使其正常工作。

我像这样从 UIPageViewController 中删除了点击手势识别器,但仍然存在错误行为...

for (UIGestureRecognizer *recognizer in pageViewController.gestureRecognizers) {
    if ([recognizer isKindOfClass:[UITapGestureRecognizer class]]) {
        recognizer.enabled = NO;
    }
}

有什么建议吗?

【问题讨论】:

  • 不要使用xcode 标签来回答与 IDE 无关的问题。谢谢!

标签: ios objective-c ios6


【解决方案1】:

子类UIViewUITableView。比如说myUIView

myUIView 中实现 UITableView 委托。

myUIView 添加为UIPageControl 的子视图。

myUIView 中的 UITableView 委托将触发。

【讨论】:

  • 我终于回到了这个任务并尝试了你的想法。不幸的是,它并没有解决我的问题。我还是要“半转”,然后子类的委托方法就可以了。还有其他想法吗?
  • yup..如果您想在 UIPageControl 中触发 UITableView 委托,只需将 UIPageControl 引用传递给 UIView(在分配时)并将 UITableView 委托设置为 UIPageControl 引用对象。就是这样:)
【解决方案2】:

原来是一件非常简单的事情。在我的 UIViewController 上,我将 autoresizingMask 设置为 FlexibleHeight。出于某种原因将其更改为 None 解决了我的问题。

// self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight;

// Changed to :

 self.contentView.autoresizingMask = UIViewAutoresizingNone;

如果有人能解释造成这种情况的原因,我将不胜感激。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-14
    • 1970-01-01
    • 2013-10-10
    相关资源
    最近更新 更多