新手使用长按手势将网络图片保存至系统相册出现的问题

来源:互联网 发布:四大台柱 知乎 编辑:程序博客网 时间:2024/04/29 01:02

首先   图片是以轮播图的形式放在一个UIScollVIew上,遇到的问题 第一手势不起作用 第二每次保存两张  第三  只能保存轮播图的第一张

Answer:1  图片的用户交互默认是关闭的

2 这个是由于没有判断手势的状态  ,应该判断当手势结束的时候不执行任何操作,直接返回;手势开始的时候才执行.第三  则是添加错了对象,应该给轮播图里的每一张图片都添加手势.代码如下


        for (int i = 0; i<self.dataSource.count; i ++) {            self.headV = [[[UIImageView alloc]initWithFrame:CGRectMake(SCREENWIDTH *i, 0, SCREENWIDTH, HEIGHT * 4)]autorelease];            _scrollView.pagingEnabled = YES;            _scrollView.showsVerticalScrollIndicator = NO;            _scrollView.showsHorizontalScrollIndicator = NO;            [self.headV sd_setImageWithURL:[NSURL URLWithString:self.dataSource[i]]];            [self.scrollView addSubview:self.headV];  //添加手势将图片保存到本地相册            UILongPressGestureRecognizer*longG = [[[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(savePicture:)]autorelease];            self.headV.userInteractionEnabled = YES;            [self.headV addGestureRecognizer:longG];            longG.minimumPressDuration = 1.0;//设置最小按压事件            longG.numberOfTouchesRequired = 1;//设置几个手指按压            longG.numberOfTapsRequired = 0;//设置按压几次                         }    }    return [[_scrollView retain]autorelease];}#pragma mark  保存图片到到本地相册- (void)savePicture:(UILongPressGestureRecognizer*)sender{
//判断手势是开始状态还是结束状态    if (sender.state == UIGestureRecognizerStateEnded) {                return;            } else if (sender.state == UIGestureRecognizerStateBegan) {                UIImageView *imageV = (UIImageView *)sender.view;        UIImageWriteToSavedPhotosAlbum(imageV.image, nil, nil, nil);        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"存储照片成功"                                                        message:@"您已将照片存储于图片库中,打开照片程序即可查看。"                                                       delegate:nil                                              cancelButtonTitle:@"OK"                                              otherButtonTitles:nil];        [alert show];        [alert release];    }}

UIImageWriteToSavedPhotosAlbumUIKit框架中的一个函数。

这里说一下后面三个参数的含义:

void UIImageWriteToSavedPhotosAlbum (

   UIImage  *image,

   id       completionTarget,

   SEL      completionSelector,

   void     *contextInfo

);

 

idtarget对象,selselector,即target对象上的方法名,contextInfo是任意指针,会传递到selector定义的方法上。一般是当完成后调用方法时使用,或者在完成时出错的处理。


0 0
原创粉丝点击