본문 바로가기
프로그래밍/iOS

[snippet] UIGestureRecognizer

by 백룡화검 2012. 7. 22.
출처 : http://cafe.naver.com/mcbugi/222530

제스쳐 스니펫입니다.

뭐 별로 복잡하게 꼬여있지 않아서.. 올려봅니다.

viewDidLoad 만 좀 수정하면 나머지는 그냥 씁니다. (필요없으면 지워도 되고...)

밑에 노트넣어놨습니다. 같이 넣어두시면 나중에 한두번 다시 보게될듯 합니다.

처음에는 파일 첨부를 했는데 뭐 따로 받아다 넣는것 보다
그냥 코드 긁어다 추가해주면 그게 더 쉽겠습니다.
긁어다 놓고, 이름지어주고, 단축키넣어주고. 끝.


아래는 스니펫 코드 입니다. (걍 긁어다가 넣으면 들어가더라구여..)





#pragma mark - UITapGestureRecognizer
// Note.
// 뷰컨트롤러에서 사용한다
// swipe  pan  동시사용이 안된다 (pan으로 이동하면 swipe  되기 때문)
// 위의 이유로 swipe 주석처리 하였다. (바꾸면 된다.)
// swipe 방향은 4가지 (/아래//인데, 4방향  필요하면 4개로 만들면 된다.
// 기존에 버튼액션이나 터치 액션이 있으면 거기다가 연결해도 된다
// 경험상.. 많은 제스쳐를 이용해야 하면.. 버튼이 좋다.(제스쳐 20번 하면 팔빠짐..)
// touch 액션으로 연결해도 좋을듯..
// UISlider  같이 사용이 안된다 슬라이딩을 swipe 제스쳐로 인식한다

// viewDidLoad 메소드에 넣어야 되는게 있으므로.. 넣어두고 정리해야한다
// 제스쳐에 의한 액션 @selector  그냥 두었다아래 메소드에가서 구현할걸 하면 될듯..
// 아니면 기존에 있는 메소드 선택하면 된다.

// 프레임워크나 헤더 델리게이트는 따로 필요없다
- (void)viewDidLoad
{
    [super viewDidLoad];
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer allocinitWithTarget:self action:@selector(tapDetected:)];
    doubleTap.numberOfTapsRequired = 2;
    [self.view addGestureRecognizer:doubleTap];
    
    UIPinchGestureRecognizer *pinchRecognizer = [[UIPinchGestureRecognizer allocinitWithTarget:self action:@selector(pinchDetected:)];
    [self.view addGestureRecognizer:pinchRecognizer];
    
    UIRotationGestureRecognizer *rotationRecognizer = [[UIRotationGestureRecognizer allocinitWithTarget:self action:@selector(rotationDetected:)];
    [self.view addGestureRecognizer:rotationRecognizer];
    
    UIPanGestureRecognizer *panRecognizer = [[UIPanGestureRecognizer allocinitWithTarget:self action:@selector(panDetected:)];
    panRecognizer.minimumNumberOfTouches = 1;
    panRecognizer.maximumNumberOfTouches = 2;
    [self.view addGestureRecognizer:panRecognizer];
    
    /*
     UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeDetected:)];
     swipeRecognizer.direction = UISwipeGestureRecognizerDirectionRight;
     [self.view addGestureRecognizer:swipeRecognizer];
     */
    UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer allocinitWithTarget:self action:@selector(longPressDetected:)];
    longPressRecognizer.minimumPressDuration = 2;
    longPressRecognizer.numberOfTouchesRequired = 1;
    [self.view addGestureRecognizer:longPressRecognizer];
}
- (IBAction)longPressDetected:(id)sender{
    NSLog(@"2 Second Long Press");
}
- (IBAction)panDetected:(id)sender{
    NSLog(@"Pan & Draging");
}
/*
 - (IBAction)swipeDetected:(id)sender{
 NSLog(@"Right Swipe");
 }
 */
- (IBAction)tapDetected:(id)sender{
    NSLog(@"Double Taping");
}
- (IBAction)pinchDetected:(id)sender{
    CGFloat scale = [(UIPinchGestureRecognizer *)sender scale];
    CGFloat velocity = [(UIPinchGestureRecognizer *)sender velocity];
    NSString *resultString = [[NSString allocinitWithFormat:@"[Pinch]\nscale = %.2f,\n velocity = %.2f",scale,velocity];
    NSLog(@"%@",resultString);
}
- (IBAction)rotationDetected:(id)sender{
    CGFloat radians = [(UIRotationGestureRecognizer *)sender rotation];
    CGFloat velocity = [(UIRotationGestureRecognizer *)sender velocity];
    NSString *resultString = [[NSString allocinitWithFormat:@"[Rotation]\nRadians = %.2f,\n velocity = %.2f",radians,velocity];
    NSLog(@"%@",resultString);
}


'프로그래밍 > iOS' 카테고리의 다른 글

[snippet] Touch Method  (0) 2012.07.22
[snippet] 현재 설치된 앱의 경로 확인  (0) 2012.07.22
[snippet] Lazy Instantiation  (0) 2012.07.22
[snippet] 기기회전에 따른 요소 재배치  (0) 2012.07.22
[snippet] iAd 삽입  (0) 2012.07.22