首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检测作为UIScrollView子视图添加的UIImage触摸

检测作为UIScrollView子视图添加的UIImage触摸
EN

Stack Overflow用户
提问于 2013-02-26 13:53:15
回答 4查看 6.2K关注 0票数 2

我有很多UIScrollViewUIImageViews.I需要拖放图像从UIScrollView到另一个视图。在外部的scrollView触摸是有效的。但是里面的滚动视图触摸是不起作用的。我使用了touchesBegantouchesMoved等方法。请帮帮我。

代码语言:javascript
运行
复制
-(IBAction)selectBut:(id)sender
{

 scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(x,y,w,h)];

 scrollView.userInteractionEnabled = YES;

 int y = 0;

 for (int i = 0; i < [myArray count]; i++) {

UIImageView *image = [[UIImageView alloc]initWithFrame:CGRectMake(0, y, 75, 30)];

 image.userInteractionEnabled = YES;

  y=y+35;

 [scrollView addSubview:image];

}

[self.view addSubview:scrollView];

[scrollView setContentSize:CGSizeMake(150, 300)]

}

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

{

   UITouch *touch = [touches anyObject];

    if ([touch tapCount] == 1) {

        NSLog(@"One touch !!");
    }

}
EN

Stack Overflow用户

回答已采纳

发布于 2013-02-26 14:03:21

您需要使用您自己的视图来自定义UIImageView 继承自UIImageView。在定制的子类中提供触摸方法,并将其添加到您的UIScrollView中。

UIScrollview的子视图永远不会直接调用touchesBegan方法。您需要使用subview进行自定义,以获取添加的子视图/自定义视图的touchesBegan属性。

我的意思是以ImageView的子类为例

代码语言:javascript
运行
复制
CustomImageView *imageView = [[CustomImageView alloc] initWithFrame:CGRectMake(0, 0, 200, 200)];
[imageView setUserInteractionEnabled:YES];
[scrollView addSubview:imageView];
[imageView release];

应该从UIImageView继承CustomImageView类,如下所示

代码语言:javascript
运行
复制
 @interface CustomImageView : UIImageView
  {
  }

在# .m文件中

代码语言:javascript
运行
复制
  #import "CustomImageView.h"

@implementation CustomImageView


    - (id)initWithFrame:(CGRect)frame
   {
self = [super initWithFrame:frame];
if (self) {

}
return self;
}



    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
      NSLog(@"%s", __FUNCTION__);

     }

    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {


    }

    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {


    UITouch *touch = [touches anyObject];

      if ([touch tapCount] == 2) {
    drawImageView.image = nil;
    return;
    }

     }
票数 5
EN
查看全部 4 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15082309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档