开发者

Declaring UITouchGestures?

I'm working on using a UISwipeGestureRecognizerDirectionRight method to change views within an application and i have used the following code in the main file of the View Controller but it seems as though i need to define the gesture after the asterisk and declare it as this build error states: "swipeGesture undeclared"

-(void)createGestureRecognizers {
UISwipeGestureRecognizerDirectionRight * swipeGesture = [[UISwipeGestureRecognizerDirectionRight alloc]
                                                        initWithTarget:self
                                                        action:@selector (handleSwipeGestureRight:)];
[self.theView addGestureRecognizer:swipeGesture];
[swipeGesture release];
}

-(IBAction)handleSwipeGestureRight {
NC2ViewController *second2 =[[NC2ViewController alloc] initWithNibName:@"NC2ViewController" bundle:nil];
second2.modalTransitionStyle = UIModalTr开发者_开发百科ansitionStyleCrossDissolve;
[self presentModalViewController:second2 animated:YES];
[second2 release];

}

So my question is how do i declare the "swipeGesture" after the asterisk in the header file or have i done something wrong?

Thank You


UISwipeGestureRecognizerDirectionRight is an enum value for the four possible directions. It is not a class you instantiate to recognize gestures. Use UISwipeGestureRecognizer instead:

UISwipeGestureRecognizer *swipeGesture = [[UISwipeGestureRecognizer alloc] 
                               initWithTarget:self 
                               action:@selector (handleSwipeGestureRight:)];

//Set the direction you want to detect by setting 
//the recognizer's direction property...
//(the default is Right so don't really need it in this case)
swipeGesture.direction = UISwipeGestureRecognizerDirectionRight;

[self.view addGestureRecognizer:swipeGesture];
[swipeGesture release];

Also, the handler method should be:

-(IBAction)handleSwipeGestureRight:(UISwipeGestureRecognizer *)swipeGesture {

because in the selector for the action, you put a colon in the method name meaning you want it to pass the sender object as the first parameter. (You could also remove the colon from the selector instead if you don't need the sender in the handler.)

Finally, void is more appropriate than IBAction in the handler since it won't be called from an object in a xib. However, since IBAction and void are the same thing, it won't cause a problem.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜