2014-06-30 2 views
2

Objective-C 및 Xcode를 처음 사용하며보기를 변경하는 데 어려움이 있습니다. UIScrollView을 사용하여 이미지보기간에 스 와이프 할 수 있다고 생각하지만 오른쪽으로 스 와이프하여보기를 변경하고 왼쪽으로 스 와이프하여 돌아갑니다. 나는 변경되지 않은 AppDelegate.hAppDelegate.m을 가지고 있습니다.스 와이프 제스추어보기 컨트롤러 Xcode 5.1.1

ViewController.h : ViewController.hViewController.m 아래에서 언급

#import <UIKit/UIKit.h> 
@interface ViewController : UIViewController 
@end 

ViewController.m :

#import "ViewController.h" 
#import "ViewController2.h" 

@interface ViewController() 

@end 

@implementation ViewController 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    //sets up gesture recognizer 
    UISwipeGestureRecognizer *swipeRightGesture=[[UISwipeGestureRecognizer alloc]    initWithTarget:self action:@selector(handleSwipeGesture:)]; 
    [self.view addGestureRecognizer:swipeRightGesture]; 
    swipeRightGesture.direction=UISwipeGestureRecognizerDirectionRight; 
} 

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

- (IBAction)handleSwipeGesture:(UISwipeGestureRecognizer *)sender 
{ 
    NSUInteger touches = sender.numberOfTouches; 
    if (touches == 2) 
    { 
     if (sender.state == UIGestureRecognizerStateEnded) 
     { 
      ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; 
      [self.navigationController pushViewController:vc2 animated:YES]; 
     } 
    } 
} 

@end 

I는 I을 따라서 스토리 보드 번째 관점에 연결 한 ViewController2.hViewController2.m을 위의 handleSwipeGesture 메서드에 연결된 제스처를 사용하십시오.

+0

는 u는 두 손가락을 사용하여 슬쩍 싶어? 또는 손가락 하나만 사용하면됩니까? – iOSDeveloper

답변

2
- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UISwipeGestureRecognizer *oneFingerSwipeLeft = [[UISwipeGestureRecognizer alloc] 
                initWithTarget:self 
                action:@selector(oneFingerSwipeLeft:)] ; 
    [oneFingerSwipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft]; 
    [[self view] addGestureRecognizer:oneFingerSwipeLeft]; 
} 

- (void)oneFingerSwipeLeft:(UITapGestureRecognizer *)recognizer 
{ 
    NSLog(@"Swiped left"); 
    // Add your navigation Code Here 
} 

U는 한 손가락으로 쓸기를 사용하고 싶을 때 사용할 수 있습니다. U 추가 할 경우 두 손가락으로 스 와이프가 함께 IBOutlet에 매여 있지 않기 때문에

1

- (IBAction)handleSwipeGesture:(UISwipeGestureRecognizer *)sender가 IBAction를 할 필요가 없습니다 (void)onefingerSwipeLeft 방법에 코드를 위

NSUInteger touches = sender.numberOfTouches; 
    if (touches == 2) 
    { 
     if (sender.state == UIGestureRecognizerStateEnded) 
     { 
     } 
    } 

를 추가합니다. 대신 void을 반환해야합니다. 따라서

swipeRightGesture.numberOfTouchesRequired = 2; 

: 그것이 줄을 사용하여 전혀 인식하는

은 또한, 대신 제스처가 이미 인식 된 후 접촉의 수를 확인, 당신은 두 개의 터치 요구 사항을 만들 수 있습니다 메소드 -(void)handleSwipeGesture은 더 이상 인수를 취할 필요가 없으므로 제스처 인식기를 선언 한 행에서 콜론을 제거 할 수 있습니다.

마지막 코드는 다음과 비슷한 보일 수 있습니다 :

UISwipeGestureRecognizer *swipeRightGesture=[[UISwipeGestureRecognizer alloc]    initWithTarget:self action:@selector(handleSwipeGesture)]; 
swipeRightGesture.direction=UISwipeGestureRecognizerDirectionRight; 
swipeRightGesture.numberOfTouchesRequired = 2; 
[self.view addGestureRecognizer:swipeRightGesture]; 

... 
... 

- (void)handleSwipeGesture { 
    ViewController2 *vc2 = [[ViewController2 alloc] initWithNibName:@"ViewController2" bundle:nil]; 
    [self.navigationController pushViewController:vc2 animated:YES]; 
} 
관련 문제