简体   繁体   中英

iOS touching a UIImageView

  - (void)viewDidLoad
 {
  [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
   container = [[UIView alloc] initWithFrame:self.view.frame];
UIImageView* main_im0 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"icon1.png"]];
[container addSubview:main_im0];
[self.view addSubview:container];

 }

 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *tt = [touches anyObject];

UIImageView *touchedview=(UIImageView*)[tt view];


NSArray *views = [container subviews];



 for (UIImageView* im in views)
 {
    UIImageView* focus=im;
    if (touchedview==focus)
    {

    }

}

}

I have this piece of code that setting up an ImageView called main_im0 which is put into a UIView container which then put into view. When I clciked on the main_im0, I expect the touch function would hit the condition of touchedview==focus. However, I couldn't get that condition activated? what's wrong?

Please enable

main_im0.userInteractionEnabled = YES;

by default it's No for UIImageView

Jason, maybe I am misinterpreting your code but aren't you going a round about way of achieving a tap gesture on a UIView?

You can use:

// enable user interaction with this view
main_img0.userInteractionEnabled = YES;

// setup a tap gesture to call a method once triggered (like a javascript mouseClick event)
UITapGesture *tapGesture = [[UITapGesture alloc] initWithTarget:self selector:@selector(myMethodToDoSomething)];

[main_img0 addGestureRecognizer:tapGesture];

// if you are not using Automatic Reference Counting, then remember to release your allocated tapGesture object
[tapGesture release];


...somewhere later in your code....


// method to do something
-(void)myMethodToDoSomething
{
    NSLog(@"This method executed");
}

Now when you tap on your main_img0 view, the method "myMethodToDoSomething" will execute

By the way, if you just want a custom looking button with your own photoshop designed image, you can simply create a UIButton with code and set the background image property of the UIButton. Like so:

UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 50)];
[button setImage:[UIImage imageNamed:@"mybutton.png"] forControlState:UIControlStateNormal];

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM