2014-12-12 4 views
1

я создал вид на изображении с помощью кода, как это -Добавить действие программно созданного ImageView

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib 

    UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(50,50,20,20)]; 
    dot.image=[UIImage imageNamed:@"draw.png"]; 
    [self.view addSubview:dot]; 

} 

Я хочу добавить взаимодействия с пользователем для этого UIImageView, а затем создать селектор или действие для этого UIImageView при постукивании, как это это сделано?

+0

Используйте UITapGestureRecognizer. – rdelmar

+0

Можете ли вы написать образец кода в ответ, пожалуйста, я не знаю, как назначить UITapGestureRecognizer. Я очень новичок в Objective-C –

+0

Если вы новичок, то вы должны прочитать документацию - введите «распознаватели жестов» в поиск документации Xcode, и вы получите документ, в котором объясняется, как их использовать. – rdelmar

ответ

0

Это зависит от того, какое действие вы хотите достичь. Вообще говоря, вы будете использовать UIGestureRecognizer. Например, если вы хотите, чтобы ваше изображение реагировало на жест нажатия, вы получите следующее.
- (void) viewDidLoad { [super viewDidLoad]; // Выполняйте любую дополнительную настройку после загрузки представления, как правило, из низа dotArray = [NSMutableArray alloc] init]; UITapGestureRecognizer * tapGesture = [[UITapGestureRecognizer alloc] initWithTarget: self action: @selector (handleTapGesture :)];

for(int i = 0; i< 30; i++) { 
    UIImageView *dot =[[UIImageView alloc] ... 
    dot.image=[UIImage imageNamed:@"draw.png"]; 
    dot.tag = i; //identify dot image. 
    [self.view addSubview:dot]; 
    [dotArray addObject:dot]; 
    [dot addGestureRecognizer:tapGesture]; 
    ... 
    } 

    [tapGesture release]; 
} 

Затем методы для обработки крана жест ...

-(void)handleTapGesture:(id)sender { 
    UITapGestureRecognizer * tapGesture = (UITapGestureRecognizer*)sender; 
    for(int i = 0; i<[dotArray count]; i++) { 
    UIImageView * dot = (UIImageView*)[dotArray objectAtIndex:i]; 
    if(dot.tag == [tapGesture view].tag) { 
     //fade out animation 
     [UIView beginAnimations:nil context:NULL]; 
     [UIView setAnimationDuration:0.5f]; 
     dot.alpha = 0.0f; 
     [UIView commitAnimations]; 
} 

Для этого на работу, вам нужно сделать массив точек и объявить его в качестве переменной экземпляра, в противном случае метод не может доступ к точке.

+0

Не могли бы вы объяснить это - когда вы находитесь в HandleTapGesture, и я хочу, чтобы одна из точек исчезла, как это сделать? Потому что я создаю 30 точек, используя код, поэтому, когда я нажимаю на одну из точек, как заставить эту точку постучать, исчезают? –

+0

Возможно, мне придется снова пометить вас. –

+0

Загрузка моего симулятора .... –

0

Попробуйте так: -

UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(50,50,20,20)]; 
dot.image=[UIImage imageNamed:@"draw.png"]; 
[self.view addSubview:dot]; 

1) Для того, чтобы реализовать ряд прикосновений, необходимых в 1 см это: -

UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewDoubleTapped:)]; 
doubleTapRecognizer.numberOfTapsRequired = 2; 
doubleTapRecognizer.numberOfTouchesRequired = 1; 
[dot addGestureRecognizer:doubleTapRecognizer]; 

- (void)doubleTapped:(UITapGestureRecognizer*)recognizer 
{ 

} 

2) Для того, чтобы реализовать ряд прикосновением требуется 2 см это: -

UITapGestureRecognizer *twoFingerTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(scrollViewTwoFingerTapped:)]; 
twoFingerTapRecognizer.numberOfTapsRequired = 1; 
twoFingerTapRecognizer.numberOfTouchesRequired = 2; 
[dot addGestureRecognizer:twoFingerTapRecognizer]; 

- (void)twoFingerTapped:(UITapGestureRecognizer*)recognizer 
{ 

} 
+0

Не могли бы вы объяснить это - когда вы находитесь в HandleTapGesture, и я хочу, чтобы одна из точек исчезла, как это сделать? Потому что я создаю 30 точек, используя код, поэтому, когда я нажимаю на одну из точек, как заставить эту точку постучать, исчезают? –

+0

1 - Да, я создаю 30 точек в случайных позициях, а когда постучал по точке, я хочу 'dot.hidden = YES', но я хочу, чтобы только точка, на которую я постучал, исчезла, это возможно? Ваш ответ более подробный, но оба ответа забыли 'dot.UserInteractionEnabled = YES;' Можете ли вы отредактировать свой ответ в соответствии с моими потребностями, заблаговременно. Вы мне очень помогли –

+0

Не могли бы вы предоставить пример с кодировкой? Спасибо –

0

Спасибо всем, кто помог мне. Я собрал все ответы вместе и получил это как мой последний код.

// 
    // ViewController.m 
    // InvaderRush 
    // 
    // Created by Ajay Venkat on 13/12/2014. 
    // Copyright (c) 2014 AJTech. All rights reserved. 
    // 

    #import "ViewController.h" 

    @interface ViewController() 
    { 
     NSArray *dotArray; 

    } 
    @end 

    @implementation ViewController 
    - (void)viewDidLoad { 

     UIImageView *dot =[[UIImageView alloc] initWithFrame:CGRectMake(50,50,100,100)]; 
     dot.image=[UIImage imageNamed:@"invader.jpg"]; 
     [self.view addSubview:dot]; 
     dot.tag = 1; //identify dot image. 


     UITapGestureRecognizer *doubleTapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTapped:)]; 
     doubleTapRecognizer.numberOfTouchesRequired = 1; 
     [dot addGestureRecognizer:doubleTapRecognizer]; 
      dot.userInteractionEnabled = YES; 
     NSMutableArray *images =[[NSMutableArray alloc] initWithObjects: dot,nil]; 


    } 

    - (void)didReceiveMemoryWarning { 
     [super didReceiveMemoryWarning]; 
     // Dispose of any resources that can be recreated. 
    } 

    -(void)doubleTapped:(id)sender { 
     UIGestureRecognizer *recognizer = (UIGestureRecognizer*)sender; 
     UIImageView *imageView = (UIImageView *)recognizer.view; 

     if(imageView.tag==1) { 
      [imageView setImage:[UIImage imageNamed:@"space_invader.jpg"]]; 
     } 
    } 

    -(void)handleTapGesture:(id)sender { 
     } 
    @end 
Смежные вопросы