2013-04-17 3 views
0

Я новичок в объективном či есть изображение, и я хочу, чтобы показать некоторые предупреждающее сообщение, когда я нажимаю на него Добавлено изображение как this-Добавление нажмите событие изображения

AHolder = [[UIImageView alloc] initWithFrame:CGRectMake(5, 80, 40, 40)]; 
    UIImage *imageA = [UIImage imageNamed:@"A.png"]; 
    AHolder.image = imageA; 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(aPressed:) name:@"aPressed" object:nil]; 
    [view addSubview:AHolder] 

И его события, как this-

-(IBAction)aPressed:(id)sender 
{ 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"hello" message:@"a pressed" delegate:self cancelButtonTitle:@"cancle" otherButtonTitles:@"ok",nil]; 
    [alert show]; 
    [alert release]; 
} 

Это не дает мне никакой ошибки, но также, когда я нажимаю на изображение, ничего не происходит. Пожалуйста, предложите мне какое-либо решение.

ответ

2

Добавить жест жестки к изображению.

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapGesture)]; 
tapGesture.numberOfTapsRequired=1; 
[AHolder setUserInteractionEnabled:YES]; 
[AHolder addGestureRecognizer:tapGesture]; 
[tapGesture release]; 

-(void)handleTapGesture{ 
//do what ever you want here 
} 

В противном случае просто используйте кнопку с фоновым изображением.

0

Использовать tapGestureRecognizer. поэтому всякий раз, когда пользователь вводит iamgeview, вы можете делать все, что вы хотите

UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(aPressed)]; 
tapGesture.numberOfTapsRequired=1; 
[aHolder setUserInteractionEnabled:YES]; 
[aHolder addGestureRecognizer:tapGesture]; 

-(void)aPressed{ 
//do what ever you want here 
} 
0

Очень простой и наиболее популярным решением на ваш вопрос будет использовать пользовательские UIButton над вашим изображением. Затем просто установите селектор в качестве метода, который вы хотите вызвать нажатием кнопки. Убедитесь, что рама UIButton & UIImage такая же.

0

Добавить объект «round rect button» в файле xib. Установите атрибут «Тип» в атрибут «custom», «Background» на «nameofyourimage.extension».

Подключить aPressed: метод для касания внутри события круглой прямоугольной кнопки.

0

Не забудьте поставить UIButton по вашему изображению. Просто используйте UIButton, а не UIImageView. Вы можете установить UIButtonbackgroundimage или image Недвижимость на выбранные вами изображения.

Кроме этого вы можете использовать UITapGestureRecognizer так:

Put этот код viewDidLoad

UITapGestureRecognizer *rec = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapRecognized:)]; 
[yourImage addGestureRecognizer:rec]; 
[yourImage setUserInteractionEnabled:YES]; //!! this is important 

и реализовать этот метод делегата

#define unused_related_to_gesture 
- (void)tapRecognized:(UITapGestureRecognizer *)recognizer 
{ 
    if(recognizer.state == UIGestureRecognizerStateBegan) 
    { 
     NSLog(@"\nUIGestureRecognizerStateBegan\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStateCancelled) 
    { 
     NSLog(@"\nUIGestureRecognizerStateCancelled\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStateChanged) 
    { 
     NSLog(@"\nUIGestureRecognizerStateChanged\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStateEnded) 
    { 
     NSLog(@"\nUIGestureRecognizerStateEnded\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStateFailed) 
    { 
     NSLog(@"\nUIGestureRecognizerStateFailed\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStatePossible) 
    { 
     NSLog(@"\nUIGestureRecognizerStatePossible\n"); 
    } 
    if(recognizer.state == UIGestureRecognizerStateRecognized) 
    { 
     NSLog(@"\nUIGestureRecognizerStateRecognized\n"); 
     // this section will contain your code of clicking the image. 
     UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"hello" message:@"a pressed" delegate:self cancelButtonTitle:@"cancle" otherButtonTitles:@"ok",nil]; 
     [alert show]; 
     [alert release]; 
    } 
} 
Смежные вопросы