是否可以在视图中显示UIImagePickerController,而不是使用模态或弹出框内?
我试过这个,没有成功......
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypePhotoLibrary]) {
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
NSArray *mediaTypesAllowed = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
[picker setMediaTypes:mediaTypesAllowed];
picker.delegate = self;
[picker.view setFrame:CGRectMake(0,0, 400, 400)]; // just for testing
[picker.view setCenter:CGPointMake(200,200)];
[myView addSubview:picker.view];
[picker.view release];
}
感谢您的帮助
答案 0 :(得分:1)
是
你可以在popover / modal视图之外使用Image Picker,这本身并不违法,它只是不受支持。因此它很脆弱。当你提交你的应用程序时,你不会遇到麻烦,但是当你的新版本iOS出现时你会想要特别注意,因为它有可能破坏(因为它不支持使用图像选择器不同的方式)。
我联系了Apple的技术支持,因为我还需要实现类似于带有分段控件的iPad Pages.app popover。使用图像选择器作为分段控件之一查看内容。
我设置了一切并且正在工作,但我无法隐藏图像选择器中的“取消”按钮。这位Apple工程师告诉我,这不是一个受支持的解决方案,并告诉我Apple“过去已经知道使用私有API来实现某些结果”。我不认为这是一个巨大的惊喜。但我相信,至少在今天,他们至少会限制自己在App Store中发布的应用程序只使用公共API。
请在BitBucket上查看我的git repo,我使用视图控制器包含工作(从iOS 5开始提供)。
https://bitbucket.org/danielphillips/image-picker-demo
它还包含一些隐藏取消按钮的黑客攻击。它确实使用了一个未记录的属性,我不确定你是否可以将它称为私有API,我以前从未试图破解Cocoa Touch的私有API,我从来没有真正为此烦恼,所以我不能如果这是一个轻微的黑客,或者苹果有软件可以检测到我使用私有API。
所以我不知道隐藏取消按钮部分是否会让你进入App Store,但它可能值得一试。
答案 1 :(得分:0)
我强烈怀疑没有超出API的可能性。
选择器视图的主要功能是安全地提供对系统范围资源的访问。换句话说,它有一个网守功能,Apple不希望任何应用程序能够覆盖。至少要强制执行它对光学库的访问限制,它必须是模态的。
这可能会在4.0中放松,但我有点怀疑。
答案 2 :(得分:0)
注意:“在弹出窗口外部轻敲它”规则有一个小例外,这导致我的一个应用程序提交中出现问题。如果你有一个工具栏,点击工具栏(技术上在popover =之外)不会忽略弹出窗口。如果你不为这种情况编码,可以一次产生两个弹出窗口,这将使你的应用程序被拒绝...