2010-03-31 1 views
0

Я пытаюсь расширить учебник, пытаясь сделать анимацию Рю только тогда, когда он коснулся. Тем не менее, прикосновение даже не регистрируется, и я считаю, что это связано с тем, что оно является подчиненным. Вот мой код:Как я могу проверить, не касается ли моего подзона?

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

if([touch view] == ryuView){ 
    NSLog(@"Touch"); 
} else { 
    NSLog(@"No touch"); 
} 
} 

-(void) ryuAnims{ 
NSArray *imageArray = [[NSArray alloc] initWithObjects: 
     [UIImage imageNamed:@"1.png"], 
     [UIImage imageNamed:@"2.png"], 
     [UIImage imageNamed:@"3.png"], 
     [UIImage imageNamed:@"4.png"], 
     [UIImage imageNamed:@"5.png"], 
     [UIImage imageNamed:@"6.png"], 
     [UIImage imageNamed:@"7.png"], 
     [UIImage imageNamed:@"8.png"], 
     [UIImage imageNamed:@"9.png"], 
     [UIImage imageNamed:@"10.png"], 
     [UIImage imageNamed:@"11.png"], 
     [UIImage imageNamed:@"12.png"], 
     nil]; 

ryuView.animationImages = imageArray; 
ryuView.animationDuration = 1.1; 
[ryuView startAnimating]; 


} 



-(void)viewDidLoad { 
     [super viewDidLoad]; 

     UIImageView *image = [[UIImageView alloc] initWithFrame: 
     CGRectMake(100, 125, 150, 130)]; 
ryuView = image; 


ryuView.image = [UIImage imageNamed:@"1.png"]; 
ryuView.contentMode = UIViewContentModeBottomLeft; 
[self.view addSubview:ryuView]; 
     [image release]; 
} 

Этот код компилируется нормально, однако при касании или нажатии на рю ничего не происходит. Я также попытался

if([touch view] == ryuView.image) 

, но это дает мне эту ошибку: «Сравнение особого типа Objective-C„STRUCT UIImage *“и 'структура UIView * не хватает актеров.» Что я делаю не так?

ответ

1

Возможно ли установить UIView, чтобы получать события касания?

ryuView.userInteractionEnabled = YES; 
0

touchesBegan является метод UIView класса, и он должен быть реализован в подклассе UIView (или UIImageView в вашем случае). Не в каком-то внешнем классе, где вы реализуете блок анимации!

Поэтому убедитесь, что вы создали подкласс UIImageView, например. RyuImageView и осуществить touchesBegan способ. Затем вы должны сообщить об этом объекту блоком анимации, который был затронут ryuView. Для этого вы можете использовать метод делегирования. См. Ответ Xcode: How to change Image on Touching at an Image (same Position)? в качестве образца.

И да, установить UIImageView-х userInteractionEnabled к ДА потому что значение этого свойства UIImageView по умолчанию NO

сделать это либо в initWith ... метод RyuImageView:

self.userInteractionEnabled = YES; 

или в вашем классе анимационных блоков:

ryuView.userInteractionEnabled = YES; 
Смежные вопросы