2012-02-19 20 views
6

Wiem, jak dodać program do rozpoznawania gestów za pośrednictwem IB, ale próbuję go znaleźć bez użycia IB.programistycznie dodając gestrecongnizer

Więc w zasadzie to, co mają w tej chwili jest

blue1.userInteractionEnabled = YES; 
UIPanGestureRecognizer *pgr = [[UIPanGestureRecognizer alloc] 
           initWithTarget:self action:@selector(handlePan:)]; 

[blue1 addGestureRecognizer:pgr]; 
[pgr release]; 

i mój handlePan jest

-(IBAction)handlePan:(UIPanGestureRecognizer *)recognizer { 

    CGPoint translation = [recognizer translationInView:self.view]; 

    recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x, recognizer.view.center.y + translation.y); 

    [recognizer setTranslation:CGPointMake(0, 0) inView:self.view]; 

} 

to działa dobrze, jeśli zrobić to nad IB i jestem w stanie filmu kawałek dookoła.

Nie rozumiem, co powoduje, że się nie porusza, tak jak jest teraz zakodowana.

Każda pomoc jest doceniana.

Próbowałem również - (void) zamiast - (IBAction) w moim handlePan, ale to też nie działało.

+0

Gdzie jest twój pierwszy segment kodu? Czy jest to gdzieś w metodzie "init"? – dasblinkenlight

+0

pierwszy segment kodu jest metodą, która zostanie wywołana z viewdidload. Jest to metoda, którą chcę uruchomić zaraz po załadowaniu widoku. –

+0

Dlaczego napisałeś '[pgr release];'? Czy nie używasz ARC dla tego przykładu, czy jest to coś, co jest konieczne przy tworzeniu i dodawaniu gestów? –

Odpowiedz

5

Fakt, że działa to w IB, ale nie w kodzie sugeruje, że błąd znajduje się w pierwszym bloku kodu. Podejrzewam, że blue1 jest nil. Upewnij się, że nie próbujesz modyfikować widoków przed viewDidLoad. Wszystkie będą nil w initWithFrame: i .

+0

Dzięki, okazuje się, że wywołałem tę metodę, zanim ustawiłem inną zmienną na wartość true, więc pominąłem tę część, ponieważ ta druga zmienna była fałszywa. –

Powiązane problemy