Implement UITouchDown for UIImageView

前端 未结 4 1942
名媛妹妹
名媛妹妹 2021-02-09 03:44

I know how to implement touchesBegan for UIImageView

is it possible to implement UITouchDown for UIImageView ?(i know

4条回答
  •  被撕碎了的回忆
    2021-02-09 03:53

    Use a UIButton.

    UIButton *aButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [aButton setImage:someUIImage forState:UIControlStateNormal];
    [aButton addTarget:self action:@selector(aMethod) forControlEvents:UIControlEventTouchUpInside];
    
    [self.view addSubview:aButton];
    

    Alternative to UIButton (longer method)

    A UIControl implements user interactions and support for fine-grained user interactions already. You can combine the functionality of a UIImageView and a UIControl to achieve this since both are subclasses of UIView.

    To get this behavior, add an object of UIImageView as a subview to a UIControl such that the image is fully covered. Then add a event handler to this control using addTarget:action:forControlEvents:. Here's an example:

    // assuming the image view object exists
    UIImageView *anImageView = ..;
    
    // create a mask that the covers the image exactly
    UIControl *mask = [[UIControl alloc] initWithFrame:anImageView.frame];
    
    // add the image as a subview of this mask
    CGSize imageSize = anImageView.frame.size;
    anImageView.frame = CGRectMake(0, 0, imageSize.width, imageSize.height);
    [mask addSubview:anImageView];
    
    // add a target-action for the desired control events to this mask
    [mask addTarget:self action:@selector(someMethod:) forControlEvents:UIControlEventTouchUpInside];
    
    // add the mask as a subview instead of the image
    [self.view addSubview:mask];
    

提交回复
热议问题