iOS 제스처 및 터치

2836 단어
터치는 iOS의 상호작용 핵심이다. 그는'버튼을 누르기'나'키보드를 클릭하기'에 국한되지 않고 제스처 식별을 포함한 일련의 제스처도 포함한다.

터치 #


  터치에 포함된 정보는 다음과 같습니다.
  • 발생한 곳
  • 어느 단계(누르기, 이동, 들어올리기)
  • 클릭 수
  • 시간 동안 모든 터치 작업과 정보는 UITOuch 대상에 저장되고 이런 UITOuch 대상은 UIEvert 대상에 저장되어 전달된다.터치의 다섯 단계: UItouch Phase Began - 터치 시작 UItouch Phase Moved- 이동 UItouch Phase Stationary- - 이전 이벤트 이후에도 터치 중이지만 이동하지 않음 UItouch Phase Ended- 터치 종료 터치 UItouch Phase Cancelled- 터치 터치 터치 클래스에 터치 이벤트 응답 추적하지 않음
  • touchesBagan: with Event: - 화면에 닿기 시작하면 시스템이 이 방법을 사용합니다
  • touchesMoved: with Event: - 화면을 만지고 계속 이동할 때 시스템이 이 방법을 사용합니다
  • touchesEnded: with Event: - 터치 프로세스 종료 이 방법 호출
  • touchesCancelled: with Event: - 터치 차단, 시스템 호출 방법
  • 이 방법들은 일반적으로 UIView나 UIView Controller가 실현해야 하며, 부모 클래스를 복사하는 방법과 같다.보기에 대한 터치는 응답 체인과 관련이 있기 때문에 관심 있는 친구는 관련 응답 규칙을 찾아볼 수 있다.  또한 iOS 지출 단일 터치(Single-Touch)와 다중 터치(Multi-Touch);

    제스처 인식기 #


       이것은 애플이 제공한 강력한 식별 방식이다.알잖아!iOS SDK 내장형 제스처
  • 클릭(tap)-손가락 하나 또는 여러 개 터치;gestureRecongnizers 속성을 통해 원하는 클릭 횟수를 설정할 수 있습니다
  • 슬라이딩(swipe)-상하좌우로 단거리 단점 터치 또는 다점 터치, 이런 제스처는 주방향을 너무 초과해서는 안 된다
  • 양손 모으기(pinch) - 밀어내기 또는 밀어내기
  • 회전(rotate) - 두 손가락이 시계 반대 방향으로 이동하면 식별기가 회전하는 각도와 속도를 개발자에게 되돌려준다
  • 드래그(pan) - 손가락으로 화면에 드래그하는 동작을 하면 좌표의 변화를 식별할 수 있다
  • 길게 누르기(long press)--이것은 설명하지 않습니다\다음은 터치와 제스처 식별기로 각각 드래그 기능을 어떻게 실현하는지 코드로 보여 줍니다.
  • @implementation DragView
    {
    CGPoint startLocation;
    }
    -(instancetype)initWithImage:(UIImage *)anImage
    {
    self=[super initWithImage:anImage];
    if(self)
    {
    self.userInteractionEnabled=YES;
    }
    return self;
    }
    -(void)touchBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    startLocation =[[touches anyObject] locationInView:self];
    [self.superview bringSubviewToFront:self];// 
    }
    -(void)touchMoved:(NSSet *)touches withEvent:(UIEvent *)event{
    CGPiont pt=[[touches anyObject] locationInView:self];
    float dx=pt.x-startLocation.x;
    float dy=pt.y-startLocation.y;
    CGPiont newcenter=CGPonitMake(
    self.center.x+dx,self.center.y+dy);
    self.center=newcenter;
    }
    

      제스처 식별기로 실현
    @implementation DragView
    {
    CGPoint spreviousLocation;
    }
    -(instancetype)initWithImage:(UIImage *)anImage
    {
    self=[super initWithImage:anImage];
    if(self)
    {
    self.userInteractionEnabled=YES;
    UIPanGestureRecongnizer *panGesture=[[UIPanGestureRecongnizer alloc]initWithTarget:self action: @selector(handlePan:)];
    self.gestureRecognizers=@[panGesture];
    }
    return self;
    }
    -(void)touchBegan:(NSSet *)touches withEvent:(UIEvent *)event{
    spreviousLocation =self.center;
    [self.superview bringSubviewToFront:self];// 
    }
    -(void)hanlePan:(UIPanGestureRecongnizer *)sender{
    CGPoint tanslation=[sender translationInView:self,superview];
    self.center=CGPonitMake(spreviousLocation.x+tanslation.x,spreviousLocation.y+tanslation.y);
    }
    

    좋은 웹페이지 즐겨찾기