Взаимодействие с пользователем UIImageView включено, но по-прежнему необходимо распознавать жесты

Я пытаюсь заставить работать следующее:

vw = [[UIView alloc] initWithFrame:CGRectMake(0, 0, [ass.match.ch.shots intValue]*(50+spacer), 20)];

for(int i =index;i<index+[ass.match.ch.shots intValue];i++){
    Results *theRes = [[ass.mem.results allObjects] objectAtIndex:i];
    UIImageView *img = [[UIImageView alloc] initWithFrame:CGRectMake(a*(50+spacer), 0, 50, 50)];
    if([theRes.singleresult intValue] > 0){
        [img setImage:[UIImage imageNamed:@"hit.png"]];
        [img.layer setShadowColor:[[UIColor greenColor] CGColor]];
    }else{
        [img setImage:[UIImage imageNamed:@"nhit.png"]];
        [img.layer setShadowColor:[[UIColor redColor] CGColor]];
    }

    UITapGestureRecognizer *tap =
    [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(imageTapped:)];


    img.userInteractionEnabled = YES;
    [img setContentMode:UIViewContentModeCenter];
    [img.layer setShadowOffset:CGSizeMake(-1.0, -1.0)];
    [img.layer setShadowOpacity:0.5];
    [img addGestureRecognizer:tap];
    [vw addSubview:img];
    a++;
}

[vw setCenter:CGPointMake((self.view.frame.size.width-200)/2,150)];
[vw setUserInteractionEnabled:YES];

[self.view addSubview:vw];

Но эта функция не вызывается, когда я нажимаю на любой из созданных ImageView, и я не знаю, почему:

-(IBAction)imageTapped:(id)sender{
NSLog(@"Test"); }

Кто-нибудь может мне помочь?


person Bene    schedule 13.03.2013    source источник


Ответы (2)


вам нужно изменить свою функцию, вот ваше решение.

UIButton *btn = [[UIButton alloc]init];
btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(50,50,70,70);
btn.backgroundColor = [UIColor blackColor];
[btn addTarget:self action:@selector(nextview:)forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:btn];

}

-(void) nextview:(id)sender {
NSLog(@"tapped");
}

работает отлично., надеюсь, это поможет..

person Dhruvik    schedule 14.03.2013
comment
Хорошо, я заменил UIImageView на UIButton, и я вижу, что не могу нажать кнопку. Кнопка перекрывается видом, но я не знаю, какой это вид... - person Bene; 14.03.2013
comment
если вы заменили кнопку, используйте этот код [yourButton addTarget:self action:@selector(methodName:) forControlEvents:UIControlEventTouchUpInside]; Вот ваша функция (void)mthodName:(id) sender - person Dhruvik; 14.03.2013
comment
если вы используете UIButton, то нет необходимости использовать UITapgestureRecognizer. Попробуйте выше отредактированный код. Работает отлично - person Dhruvik; 14.03.2013

Я узнал это сам:

[vw bringSubviewToFront:img];

было решением. Теперь это работает.

person Bene    schedule 15.03.2013