Iphone UIImagePickerController显示在内部视图中

Iphone UIImagePickerController显示在内部视图中,iphone,iphone-sdk-3.0,ipad,Iphone,Iphone Sdk 3.0,Ipad,是否可以在视图中显示UIImagePickerController,而不是在popover中使用它 我尝试过这个,但没有成功 if ([UIImagePickerController isSourceTypeAvailable: UIImagePickerControllerSourceTypePhotoLibrary]) { UIImagePickerController *picker = [[UIImagePickerController alloc] init];

是否可以在视图中显示UIImagePickerController,而不是在popover中使用它

我尝试过这个,但没有成功

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];

}

感谢您的帮助

我强烈怀疑,如果不脱离API,这是不可能的

选择器视图的主要功能是安全地提供对系统范围资源的访问。换句话说,它有一个守门人功能,苹果不希望任何应用程序能够覆盖它。至少,为了加强对photolibrary访问的限制,它必须是模态的


这可能会在4.0中放松,但我有点怀疑

注意:有一个小的例外是“点击popover外的按钮会解除它”规则,这在我提交的一个应用程序中导致了一个问题。如果您有一个工具栏,点击工具栏(从技术上讲,它不在popover=)不会关闭popover。如果您不为这种情况编写代码,则可能同时生成两个弹出窗口,这将导致您的应用被拒绝…

合法吗? 对

您可以在popover/modal视图之外使用图像选择器,这本身并不非法,只是不受支持。因此它是脆弱的。当你提交你的应用程序时,你不会因此而与苹果公司发生冲突,但每当新版本的iOS出现时,你都会特别注意,因为它有可能崩溃(因为不支持以不同的方式使用图像选择器)

我联系了苹果的技术支持,因为我还需要实现类似于iPad Pages.app的分段控制popover。使用图像选择器作为分段控件之一查看内容

我把一切都准备好了,正在工作,但我无法在图像选择器中隐藏取消按钮。苹果的工程师告诉我,这不是一个受支持的解决方案,还告诉我苹果“在过去已经知道使用私有API来实现某些结果”。我不认为这是一个巨大的惊喜。但我敢肯定,今天至少他们限制自己,至少是因为他们在应用商店发布的应用程序只使用公共API

变通办法 请查看我在BitBucket上的git repo,我使用视图控制器容器(从iOS 5开始提供)实现了这一点

它还包括隐藏取消按钮的一些技巧。它确实使用了一个未记录的属性,我不确定你是否可以将其称为私有API。不过,我以前从未尝试过破解Cocoa Touch的私有API,我也从未真正为此烦恼过,所以我不能说这是一个轻微的破解还是苹果有软件可以检测到我使用了私有API


因此,我不知道隐藏“取消”按钮部分是否会让你进入应用商店,但这可能值得一试。

popover本身就是一种有效的模式。您可以看到界面的其余部分,但popover会捕获所有触摸。在popover外点击会使它失效。我不确定是否可以在任意视图中显示它(我也在看),但关于access和4.0,它已经改变了。在4.0中,您可以使用资产库类枚举照片和视频,并以编程方式访问它们。我相信这意味着您可以非常轻松地编写自己的图像浏览器。请看:我还没有摆弄资产库,但如果它允许任意访问媒体:(1)我会感到惊讶,(2)高兴。苹果在iOS上表现出高度的隐私/安全担忧/偏执。也许所有新的幕后安全措施都会让他们放松对开发者的限制。必须有办法做到这一点。苹果在媒体采集器的页面中这样做。他们有一个带有UISegmentedControl的Popover,用于在Popover上交换页面。其中一个页面是ImagePicker。