2013-08-02 2 views
0

У меня есть изображениеViews на моем представлении, теперь я хочу изменить background.color изображения в моем изображенииView. Нажимая второй раз на одно и то же изображение, он должен перейти к первому изображению.Objective C - Tap Gesture counting

Как я могу это сделать?

ответ

1

Держите BOOL или enum ivar, чтобы отслеживать состояние изображения. При реагировании на краны обменивайте изображение.

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

// .h 
typedef enum { StateOriginal, StateFlipped } FlipState; 

@interface FlippableImageView : UIImageView 
@property (nonatomic, assign) FlipState state; 
@end 

// in view controller 
if (flipImageView.state == StateOriginal) { 
    flipImageView.image = imageFlipped; 
    flipImageView.state = StateFlipped; 
} 
else { 
    flipImageView.image = imageOriginal; 
    flipImageView.state = StateOriginal; 
} 

Класс также может держать оба изображений и запустить хорошую анимацию ...

+0

проблема у меня есть, я не знаю, какой образ был щелкнул, потому что они не определены в файле .h. Они динамически генерировались путем анализа из XML-файла. – user2019219

0

Вы можете иметь переменное, чтобы проверить, сколько раз ImageView было затронуто. Это может быть изменен в:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 


- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 

{ 

    UITouch *touch = [touches anyObject]; 
    if (touch.view == imageView) { 
     // Make that variable ++; 
     if (variable == 2){ 
      imageView.image = [UIImage imageNamed:@"a.png"]; 
     } 
    } 
}