在UIScrollView中触摸方法UIImageView

Ste*_*ven 1 cocoa-touch objective-c uiscrollview uiimageview

我想知道我怎么可以使用触摸方法的UIImageView内部UIScrollView在Xcode.当我将UIImageView子视图添加到self.view时,我可以使用touch方法.但是当我将UIImageView子视图添加到UIScrollView时,我不能.我怎么解决这个问题?

这是我的代码:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    touches = [event allTouches];
    for (UITouch *touch in touches) {

        NSLog(@"Image Touched");
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 44, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height * 0.9)];
    scrollView.scrollEnabled = TRUE;
    scrollView.bounces = TRUE;
    scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
    scrollView.userInteractionEnabled = YES;
    [self.view addSubview:scrollView];

     UIImageView *ImageView = [UIImageView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * 0.04, 10, [UIScreen mainScreen].bounds.size.width * 0.28, [UIScreen mainScreen].bounds.size.height * 0.22)];
     ImageView.image = [UIImage imageNamed(@"image.png")];
     ImageView.layer.borderColor = [UIColor whiteColor].CGColor;
     ImageView.layer.borderWidth = 1;
     ImageView.userInteractionEnabled = YES;
     [scrollView addSubview:ImageView];
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*los 5

UIGestureRecognizers一试.通过多层触摸管理,它们更容易管理.

- (void)touchedImage:(UITapGestureRecognizer *)gesture {
    // When the gesture has ended, perform your action.
    if (gesture.state == UIGestureRecognizerStateEnded) {
        NSLog(@"Touched Image");
    }
}

- (void)viewDidLoad
{
    [super viewDidLoad];

    UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 44, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height * 0.9)];
    scrollView.scrollEnabled = TRUE;
    scrollView.bounces = TRUE;
    scrollView.contentSize = CGSizeMake([UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
    scrollView.userInteractionEnabled = YES;
    [self.view addSubview:scrollView];

    UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake([UIScreen mainScreen].bounds.size.width * 0.04, 10, [UIScreen mainScreen].bounds.size.width * 0.28, [UIScreen mainScreen].bounds.size.height * 0.22)];
    imageView.image = [UIImage imageNamed:@"image.png"];
    imageView.layer.borderColor = [UIColor whiteColor].CGColor;
    imageView.layer.borderWidth = 1;
    imageView.userInteractionEnabled = YES;
    [scrollView addSubview:imageView];

    // Create a tap gesture
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(touchedImage:)];
    [imageView addGestureRecognizer:tap];
}
Run Code Online (Sandbox Code Playgroud)