2016-01-21 67 views
2

我最近发布的苹果版本被拒绝,并提供以下回复。如何禁用UITextView上的共享而不使用非公开API并被苹果拒绝?

你的应用程序使用或参考以下非公开的API,这是一个 违反了App Store的审查指南:

_share:

使用非公开的API是不允许的在App Store中,因为 如果这些API发生变化,它可能会导致糟糕的用户体验。

我已经彻底搜索了我的应用程序在XCode for _share:方法。我正在使用它来禁用这样的UITextView共享。

@implementation UITextViewDisableShare : UITextView 

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{ 
    if (action == @selector(_share:)) 
     return NO; 
    return [super canPerformAction:action withSender:sender]; 
} 
@end 

有很多的堆栈溢出问题,这表明使用上面的代码来禁用复制,粘贴或股票期权编程e.g THIS。我只需要禁用共享选项,所以我不能简单地设置userInteractionEnabled=NO

我的应用程序版本之一已被App Store使用上面的代码接受。我应该如何在我的UITextView上禁用共享,以便它不会与任何苹果的评论指南和非公共API冲突?

回答

3

转一转(无_share API):

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{ 
    if (action == @selector(paste:) 
     || action == @selector(copy:) 
     // ... selectors that allow except _share. 
    ) 
    { 
     return YES; 
    } 

    return NO; 
} 
0

这种担忧可能是杞人忧天,但也许从canPerformAction返回NO:withSender:任何东西,除了一个人知道可能会导致意想不到的明确选择后果。例如,我们知道在UIResponderStandardEditActions中声明的方法,但我们也知道还有其他未在该标题中列出的方法,例如提示最初问题的方法;另外,也许有些情况下iOS运行时可能会执行其他通常不知道的操作。

如果您不需要允许选定文本(例如“复制”或“查找”)可能产生的任何其他操作,那么禁止为您选择“select:”或“selectAll:”的操作UITextField会给你你所寻找的结果。

相关问题