Implement UITouchDown for UIImageView

前端 未结 4 1938
名媛妹妹
名媛妹妹 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:51

    You can use UITapGestureRecognizer, instead of creating custom UIButton.

    0 讨论(0)
  • 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];
    
    0 讨论(0)
  • 2021-02-09 04:00

    control events such as UIControlEventTouchDown etc are available for UIControl's child objects like UIButton, UITextField etc. UIImageView is a UIView and hence cannot generate control notifications.

    0 讨论(0)
  • 2021-02-09 04:14

    You can't.

    control events such as UIControlEventTouchDown etc are available for UIControl's child objects like UIButton, UITextField etc. UIImageView is a UIView and hence cannot generate control notifications.

    You have to use touchesBegan and co.

    0 讨论(0)
提交回复
热议问题