使用手势(UITapGestureRecognizer)获取照片墙上首次点击图片

本文介绍如何在照片墙上实现手势识别,通过点击手势获取并传递第一张被选中的图片。文章详细描述了创建照片墙的过程,包括使用UIScrollView和UIImageView,以及如何为每个图片添加手势识别,并确保只有在特定条件下才进行图片传递。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在写shareAPP时需要将选择的第一个图片返回至上层界面,首先得获取首次被点击的图片,通过查资料得知可设一个UIImage属性,将手势点击的第一个图片传给它。但我不太会同时使用UIButton和手势在同一个UIImageView上,使用该手势好像影响了button的实现,我后来还是将手势去掉了。可能以后会使用到,还是记录下来吧。

思路

1.创建一个照片墙,可以看这篇
2.每张图片上都添加手势,创建点击手势函数
3.在手势函数中,若创建的UIImage属性值为nil,则将点击的图片赋值给它

代码

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view
    
    //创建照片墙
    //创建一个UIScrollView
    UIScrollView *imageScrollView = [[UIScrollView alloc] init];
    imageScrollView.frame = CGRectMake(10, 0, 395, 600);
    
    imageScrollView.contentSize = CGSizeMake(395, 600 * 1.5);
    
    imageScrollView.showsVerticalScrollIndicator = NO;
    
    //打开交互模式
    imageScrollView.userInteractionEnabled = YES;
    
    for(int i = 0; i < 30; i++){
  		  //加入图片
        NSString *strName = [NSString stringWithFormat:@"image-%d.jpg", i + 1];
        UIImage *image = [UIImage imageNamed: strName];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
        imageView.frame = CGRectMake(2 + (i % 4) * 100, (i / 4) * 110 + 5 , 95, 105);
        [imageScrollView addSubview: imageView];
        
        //打开图片的交互模式
        imageView.userInteractionEnabled = YES;
        //创建手势
        UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(pressTap:)];
        //单次点击
        tap.numberOfTapsRequired = 1;
        //单个手指
        tap.numberOfTouchesRequired = 1;       
        //将手势添加在imageView中
		[imageView addGestureRecognizer:tap];
    }
    [self.view addSubview:imageScrollView];
}

//手势点击函数
- (void)pressTap: (UITapGestureRecognizer *) tap{
    
    UIImageView *imageView = [[UIImageView alloc] init];
    //imageView为手势点击的imageView
    imageView = (UIImageView *)tap.view;
    //确定为第一次点击
    if(!_image){
        _image = [[UIImage alloc] init];
        _image = imageView.image;
    }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值