• (转)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];

        }

        

    }

  • 相关阅读:
    jQuery选择器大全
    MVC自定义数据验证(两个时间的比较)
    SQLServer开发总结
    疯狂的订餐系统软件需求分析挑战之旅1
    疯狂的订餐系统软件需求分析挑战之旅2
    net中C#自动化调用Word的实例总结
    软件开发中代码自动化的一点浅见
    代码自动化(1)开篇
    代码自动化(2)程序设计
    Excel 手机号码、身份证 等信息 导入到SQL2005 中,转换成字符是自动变成 科学计数法 的解决方法
  • 原文地址:https://www.cnblogs.com/zhangdashao/p/4486547.html
Copyright © 2020-2023  润新知