2013-10-10 2 views
0

내 프로젝트에 UIButton이 있고 버튼을 클릭 한 후에 버튼이 숨겨진 상태로 남아 있도록 해당 버튼 상단에 UIView이 표시됩니다. 버튼을 계속 누르고 손가락을 겹쳐서 움직이면 그 시간에 touchesmoved 이벤트를 얻고 싶습니다. UIView.아이폰에서 버튼 클릭 후 터치 이벤트를받는 방법?

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{ 

UITouch *touch = [touches anyObject]; 

    if ([touch view] == uiview) 
    { 

     NSLog(@"Touches moved"); 
    } 

하지만이 버튼을 UIView가 와서 내가 버튼을 놓을 때 UIView의 숨겨진 갈 때 그 숨겨진 누르면 지킬 때 그것은 호출되는 나던 : 지금까지 내가 그랬던 것처럼 다음과 같다. 어떤 제안이라도 제발?

+0

이보기를 가져 오는 방법과 단추를 숨기는 방법을 몇 가지 코드로 보여줄 수 있습니까? 더 쉬울 것입니다. – Unheilig

+0

나는 그 단추의 정상에 xib에있는 uiview를 가지고 가고 숨겨 지켰다. 버튼을 클릭하면 uiview가 보입니다. 버튼을 놓으면 uiview가 다시 보이지 않게됩니다. – Reyjohn

답변

3

당신의 행동을 이해하지 못했지만 UIGestureRecognizers를 사용하고 제스처 인식기를 단추에 추가하는 것이 좋습니다.

이 코드를 사용해보십시오. 내가 개발 한 카드 게임에서 이것을 사용했습니다. 긴 프레스 동작을 사용하여 카드를 움직입니다. 희망은 내가 도움이됩니다.

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(addLongpressGesture:)]; 
[longPress setDelegate:self]; 
[YOUR_BUTTON addGestureRecognizer:longPress]; 

- (void)addLongpressGesture:(UILongPressGestureRecognizer *)sender { 

UIView *view = sender.view; 

CGPoint point = [sender locationInView:view.superview]; 

if (sender.state == UIGestureRecognizerStateBegan){ 

     // GESTURE STATE BEGAN 

} 
else if (sender.state == UIGestureRecognizerStateChanged){ 

    //GESTURE STATE CHANGED/ MOVED 

    CGPoint center = view.center; 
    center.x += point.x - _priorPoint.x; 
    center.y += point.y - _priorPoint.y; 
    view.center = center; 

    // This is how i drag my views 
    } 

else if (sender.state == UIGestureRecognizerStateEnded){ 

     //GESTURE ENDED 
} 
+1

그것은 나를 위해 일했다, 감사!! – Reyjohn

+0

뛰어난 형님! –

0

overlapped UIView에 대해 view.userInteractionEnabled = NO를 설정해야합니다. 그러면 버튼에 작업이 전송됩니다.

관련 문제