• (转)UIImageView响应点击事件


    使用EGOImageView显示头像,但是没有点击事件可以处理。

    不想用UIButton做空图片了,所以就想找UIImageView响应点击事件的方法。

     

    方法1:

    UIImageView *testImageView = [[UIImageView alloc] init......................

    testImageView.userInteractionEnabled = YES;  

            UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleTap:)];  

            [testImageViewaddGestureRecognizer:singleTap];  

            [singleTap release];  //加入内存管理后可以省略该句

     

    - (void)handleSingleTap:(UIGestureRecognizer *)gestureRecognizer {  

          

        //do some method.....   

     

     

    方法2:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event  

    {  

          

        UITouch *touch = [[event allTouches] anyObject];  

          

        if ([touch view] != UIImageView)  

        {  

              

            //do some method.....  

              

        }  

          

    }

     

    只要在上面的方法中加入处理事件就OK了。

     

    ======================

    获取点击事件来源

     

     1.绑定点击事件 

     [BTBook setUserInteractionEnabled:YES]; 

    [BTBook setTag:1000];

        UITapGestureRecognizer *singleTap3 = [[UITapGestureRecognizer alloc] initWithTarget:selfaction:@selector(GoThisPic:)];

        [BTBook addGestureRecognizer:singleTap3];

        [singleTap3 release];

     

     

    2,获得事件源

     

    -(void)GoThisPic:(UIGestureRecognizer *)gestureRecognizer

    {

         UIImageView *view = [gestureRecognizer view];

         int tagvalue = view.tag;

    }

     

    当有多个同类型点击事件时,可以利用事件源得到对应的view。

    例如:

        int photosCount = [tphotosList count];        

        for (int i=0; i

            

            NSString *photoUrl = [tphotosList objectAtIndex:i];

            

            //66.67 * 4

            int linenum = i / 4;

            int rownum = i % 4;

            

            EGOImageView *egoivVgirlPhoto = [[EGOImageView alloc] initWithPlaceholderImage:[UIImage imageNamed:@"loading.png"]];

            [egoivVgirlPhoto setTag:i];

            [egoivVgirlPhoto setFrame:CGRectMake(10+66.67*rownum, 30+10+66.67*linenum, 65, 65)];

            [egoivVgirlPhoto setImageURL:[NSURL URLWithString:photoUrl]];

            

            [egoivVgirlPhoto setUserInteractionEnabled:YES];

            

            UITapGestureRecognizer *touchVgirlPhotoGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchPhotoAction:)];        

            [egoivVgirlPhoto addGestureRecognizer:touchVgirlPhotoGesture];

            [touchVgirlPhotoGesture release];

            

            [self.contentView addSubview:egoivVgirlPhoto];

            [egoivVgirlPhoto release];

            

        }

     

    -(void)touchPhotoAction:(UIGestureRecognizer *)gestureRecognizer{

        

        UIView *egoivPhotoView = [gestureRecognizer view];

        

        int tPhotoIndex = [egoivPhotoView tag];

        NSLog(@"tPhotoIndex: %d", tPhotoIndex);

        

        if ([delegate respondsToSelector:@selector(doTouchPhoto:)]) {

            [delegate doTouchPhoto:tPhotoIndex];

        }

        

    }

  • 相关阅读:
    SVN的使用
    ajax 显示,删除,批量删除,修改反填功能实现
    Linux 安装软件的几种方式
    《面向对象软件开发实践》笔记一
    Entity Framework 新手入门友好实例
    MIT 计算机科学及编程导论 Python 笔记 1
    JetBrains套装免费学生授权申请(IntelliJ, WebStorm...)
    我的十月
    关于《未成年人网络保护条例(草案征求意见稿)》的意见
    C# 分隔字符串成为字符串数组的方法(保留分隔符)
  • 原文地址:https://www.cnblogs.com/zhangdashao/p/4486547.html
Copyright © 2020-2023  润新知