我对苹果的最新版本被拒绝,并作出以下回复。
您的应用使用或引用以下非公开API,即 违反App Store审核指南:
_share:
App Store中不允许使用非公共API,因为 如果这些API发生变化,它可能会导致糟糕的用户体验。
我已经在XCode中彻底搜索了我的应用程序,用于_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
关于堆栈溢出有很多问题,建议使用上面的代码以编程方式禁用复制,粘贴或共享选项,例如THIS。我只需要禁用共享选项,因此我无法设置userInteractionEnabled=NO
。
App Store已经接受了我的一个应用程序版本,其中包含上述代码。我应该如何禁用UITextView上的共享,以免它与Apple的任何评论指南和非公共API发生冲突?
答案 0 :(得分:3)
转弯(没有Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"
Set objCommand.ActiveConnection = objConnection
objCommand.CommandText = "Select printerName, serverName, Location from " _
& " 'LDAP://DC=huge,DC=ad,DC=hcuge,DC=ch' where objectClass='printQueue' and printerName='" & shortDefaultPrinter & "' "
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst
Do Until objRecordSet.EOF
PrinterLocation = objRecordSet.Fields("Location").Value
MsgBox(PrinterLocation)
objRecordSet.MoveNext
Loop
的api):
_share
答案 1 :(得分:1)
这种担忧可能没有根据,但可能从canPerformAction返回NO:withSender:除了显而易见的选择器之外的任何事情都可能导致意外后果。例如,我们知道在UIResponderStandardEditActions中声明的方法,但我们也知道还有其他未在该标题中列出的方法,例如提示初始问题的方法;此外,可能存在iOS运行时可能执行其他通常不知道的操作的情况。
如果您不需要允许选定文本可能产生的任何其他操作(例如“复制”或“查找”),则禁止UITextField的“select:”或“selectAll:”操作会给你你想要的结果。
答案 2 :(得分:0)
迅速:
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
if action == #selector(cut(_:))
|| action == #selector(copy(_:))
|| action == #selector(select(_:))
|| action == #selector(selectAll(_:))
|| action == #selector(paste(_:))
|| action == #selector(delete(_:)) {
return super.canPerformAction(action, withSender: sender)
}
return false
}