iOS 제스처

4258 단어

손짓


제스처는 터치 사건에 대한 봉인이다. 규칙적인 터치 사건의 집합이다.모든 제스처는 반드시 대상에게 받아들여져야 한다.동시에 모든 제스처는 특정 유형의 대상에게만 받아들여질 수 있다.너는 화면에 tap을 한 번 하고 반죽하는 대상으로 받아들이기를 기대할 수 없다.만약 네가 스크린을 가볍게 두드렸지만, 가볍게 두드린 종류로 검사하지 않았다면, 이번에는 헛두드린 셈이다.

ios에서는 모든 제스처를 7가지로 나눈다.


가볍게 두드리기: UITAp Gesture Recognizer 길게 누르기: UIlong Press Gesture Recognizer 회전: UIRotation Gesture Recognizer 접합: UIPinch Gesture Recognizer 평행 이동: UIPan Gesture Recognizer 가볍게 쓸기: UISwipe Gesture Recognizer 화면 가장자리 끌어내기: UIScreen Edge Pan Gesture Recognizer 그들은 제스처 식별기라고 부른다. 즉, 화면을 설정해야 그들이 화면을 감지할 수 있다.
다음은 7가지 제스처: (자꾸 셀카로...) 가볍게 제스처 식별기: UITApGestureRecognizer
"//  
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapAciont:)];"
"//  
[self.rv.myImageView addGestureRecognizer:tap]; // ,self.rv.myImageView , view . , . ."
"//  :
tap.numberOfTapsRequired = 1;  // , ! , ."
"// n   .
tap.numberOfTouchesRequired = 1; "

제스처 인식기
UILongPressGestureRecognizer * longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPressAction:)];
[self.rv.myImageView addGestureRecognizer:longPress];
"//  , , .
longPress.minimumPressDuration = 2;"

회전 제스처 식별기
UIRotationGestureRecognizer * rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationAction:)];
[self.rv.myImageView addGestureRecognizer:rotation];
" : .
- (void)rotationAction:(UIRotationGestureRecognizer *)sender
{
    sender.view.transform = CGAffineTransformRotate(sender.view.transform, sender.rotation);  // , , .
    sender.rotation = 0;  //  , . .
}"
 n .

제스처 인식기
"UIPinchGestureRecognizer *pinch = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(pinchAction:)];
[self.rv.myImageView addGestureRecognizer:pinch];"
"//  , , .
- (void)pinchAction:(UIPinchGestureRecognizer *)sender
{
    sender.view.transform = CGAffineTransformScale(sender.view.transform, sender.scale, sender.scale);
    sender.scale = 1;
}
"

변환 제스처 식별기
UIPanGestureRecognizer * pan = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(panAction:)];
[self.rv.myImageView addGestureRecognizer:pan];
"//  , ?
-(void) panAction:(UIPanGestureRecognizer *)sender
{
    //  
    CGPoint point = [sender translationInView:sender.view];
    //  .
    sender.view.transform = CGAffineTransformTranslate(sender.view.transform, point.x, point.y);
    //  
    [sender setTranslation:CGPointZero inView:sender.view ];
}"

제스처 식별기를 가볍게 쓸고 제스처를 청소하려면 네 개의 다른 방향의 검측기를 설치해야 한다.
UISwipeGestureRecognizer * leftswip = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipAction:)];
[self.rv.myImageView addGestureRecognizer:leftswip];
leftswip.numberOfTouchesRequired  = 1;
leftswip.direction =  UISwipeGestureRecognizerDirectionLeft ;
UISwipeGestureRecognizer * rightswip = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipAction:)];
[self.rv.myImageView addGestureRecognizer:rightswip];
rightswip.numberOfTouchesRequired  = 1;
rightswip.direction =  UISwipeGestureRecognizerDirectionRight ;
"//  , sender( ) direction( ) .
- (void)swipAction:(UISwipeGestureRecognizer *)sender
{
    //NSLog(@"" "");
    if (sender.direction == UISwipeGestureRecognizerDirectionDown) {
        NSLog(@"" "");
    }
    if (sender.direction == UISwipeGestureRecognizerDirectionUp) {
        NSLog(@"" "");
    }
    if (sender.direction == UISwipeGestureRecognizerDirectionLeft) {
        NSLog(@"" "");
    }
    if (sender.direction == UISwipeGestureRecognizerDirectionRight) {
        NSLog(@"" "");
    }
}"

스크린 테두리 식별기 이것은 가볍게 청소하는 것과 마찬가지로 네 가지 방향의 검측을 제공해야 하며, 하나의 검측기로 실현할 수 없다.
UIScreenEdgePanGestureRecognizer * edge = [[UIScreenEdgePanGestureRecognizer alloc] initWithTarget:self action:@selector(handleGesture:)];
edge.edges = UIRectEdgeRight;
edge.delegate = self ;
[self.rv addGestureRecognizer:edge];

좋은 웹페이지 즐겨찾기