在我的iOS应用中,我想设置我的PageViewController的主要scrollView的委托。
有很多答案说:“好的,juste迭代子视图,你会发现滚动视图”。
好的,它有效,但它是否通过Apple验证步骤?它不是对私有API的调用吗?有人成功发布了这个技巧吗?
谢谢大家,
答案 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中进行更改,我将不得不修改我的代码。在这种情况下,假设您的查找可能失败(您将无法找到滚动视图或可能添加新的滚动视图)并使您的代码适应该情况,这是一个很好的做法。
此外,您必须考虑到人类会将您的应用作为应用商店评论的一部分。如果你从预期的行为中改变了太多东西,就可以单独拒绝它。