UIPageViewController:Scroll Delegate

时间:2015-01-06 17:04:39

标签: ios scrollview uipageviewcontroller

在我的iOS应用中,我想设置我的PageViewController的主要scrollView的委托。

有很多答案说:“好的,juste迭代子视图,你会发现滚动视图”。

好的,它有效,但它是否通过Apple验证步骤?它不是对私有API的调用吗?有人成功发布了这个技巧吗?

谢谢大家,

1 个答案:

答案 0 :(得分:1)

简而言之,不,这不会绊倒Apple的验证步骤。有关Apple检测私有API使用方式的列表,请参阅this answer。如果您引用私有类或选择器,它们主要是在寻找。例如UIKeyboardImpl_setViewDelegate:

我个人在应用程序商店中有类似的东西。我需要在UITextField中获取UISearchBar所以我有以下代码:

UIView<UITextInput> *UISearchBarTextInput(UISearchBar *searchBar) {
    for (id view in searchBar.subviews) {

        // Could be in the top level. (iOS6)
        if ([view conformsToProtocol:@protocol(UITextInput)]) {
            return view;
        }

        // Or the next level. (iOS7)
        for (id subview in [view subviews]) {
            if ([subview conformsToProtocol:@protocol(UITextInput)]) {
                return subview;
            }
        }
    }

    return nil;
}

您可能遇到的一个大问题是您正在处理私有视图层次结构,Apple不保证这将在iOS版本之间保持不变。在上面的代码中,我必须支持两个不同的iOS版本。如果他们决定在iOS9中进行更改,我将不得不修改我的代码。在这种情况下,假设您的查找可能失败(您将无法找到滚动视图或可能添加新的滚动视图)并使您的代码适应该情况,这是一个很好的做法。

此外,您必须考虑到人类会将您的应用作为应用商店评论的一部分。如果你从预期的行为中改变了太多东西,就可以单独拒绝它。