使用 UIImageWriteToSavedPhotosAlbum 保存图像时出现无法识别的选择器错误
Posted
技术标签:
【中文标题】使用 UIImageWriteToSavedPhotosAlbum 保存图像时出现无法识别的选择器错误【英文标题】:Unrecognized selector Error when saving an image using UIImageWriteToSavedPhotosAlbum 【发布时间】:2012-05-09 05:51:15 【问题描述】:UILongPressGestureRecognizer 使用操作句柄LongPressOnPhotos 添加到我的 imageView 中。最相关的代码如下:
- (IBAction)handleLongPressOnPhotos:(UIImageView *)sender
self.imageWillBeSaved = sender;
UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"Cancel" destructiveButtonTitle:@"Save the photo" otherButtonTitles: @"Go to the Original photo", nil];
actionSheet.actionSheetStyle = UIActionSheetStyleDefault;
[actionSheet showInView:self.view];
[actionSheet release];
- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
switch (buttonIndex)
case 0:
UIImageWriteToSavedPhotosAlbum(self.imageWillBeSaved.image, self, @selector(image: didFinishSavingWithError:contextInfo:), nil);
break;
default:
break;
- (void)image:(UIImage *)image didFinishSavingWithError:(NSError *)error contextInfo:(void *)contextInfo
if (error != NULL)
// handle error
else
// handle ok status
单击操作表上的“保存照片”按钮时,错误消息为:-[UILongPressGestureRecognizer image]: unrecognized selector sent to instance 0x21c2a0 代码有问题吗?提前致谢!
【问题讨论】:
你在哪里添加了UILongPressGestureRecognizer?也添加该代码。 请检查以下答案,问题已解决。 【参考方案1】:只需替换前两行..
- (IBAction)handleLongPressOnPhotos:(UIImageView *)sender
self.imageWillBeSaved = sender;
与..
- (IBAction)handleLongPressOnPhotos:(UIGestureRecognizer *)sender
self.imageWillBeSaved = sender.view;
这应该可以工作......大卫很好地解释了为什么会发生这种情况。
【讨论】:
是的,它有效,但我遇到了另一个问题***.com/questions/10511047/…【参考方案2】:您的发件人显然是 UILongPressGestureRecognizer。
手势识别器触发时触发的方法应如下所示
- (void)nameOfMethodHere:(UIGestureRecognizer *)gestureRecognizer;
参数是识别器,而不是图像视图。如果识别器仅附加到一个视图,您可以通过 view
属性获得它。否则,您可以获取长按的位置并点击测试以获取视图。
【讨论】:
我现在可以保存图片,但是为什么我点击“保存照片”按钮后操作表不会被关闭?如果我再次单击该按钮,操作表将被取消,并且照片会保存两次。 保存图像可能需要一秒钟。如果你等待,你会收到回调吗?也许您应该立即关闭 actionSheet(在 actionSheet:clickedButtonAtIndex: 中)并等待回调。如果有错误,那么你提出它,如果没有,用户会认为一切正常。 不是因为延迟。我在这里发布一个新问题***.com/questions/10511047/…,请检查【参考方案3】:这是给UILongPressGestureRecognizer
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 1.0;
[YOURVIEW addGestureRecognizer:longPress];
[longPress release];
这是UILongPressGestureRecognizer
的选择器,代码中的问题是,您将UIImageView
作为UILongPressGestureRecognizer
的选择器中的参数传递,只需用这个编辑它..
- (void)handleLongPress:(UILongPressGestureRecognizer*)sender
if (sender.state == UIGestureRecognizerStateBegan)
//YOUR CODE
【讨论】:
以上是关于使用 UIImageWriteToSavedPhotosAlbum 保存图像时出现无法识别的选择器错误的主要内容,如果未能解决你的问题,请参考以下文章
在使用加载数据流步骤的猪中,使用(使用 PigStorage)和不使用它有啥区别?
Qt静态编译时使用OpenSSL有三种方式(不使用,动态使用,静态使用,默认是动态使用)