2016-08-11 3 views
0

화면 주위를 드래그 할 수있는 사용자 정의 UIButton을 작성하고 있습니다. 이 버튼을 누르면 uiview가 superview에 추가됩니다. 이 뷰에 팬 제스처를 추가 했으므로 드래그 할 수도 있습니다. 그리고 지금 나는 동시에 uiview와 button을 드래그 할 수있게하고 싶다. 어떻게해야합니까? 예를 들어
: 내가 UIView의 또는 지점에있는 버튼을 드래그하면
버튼이 움직일 때 uiview 이동

  • , 다른 하나는 너무 이동합니다. 자세한 내용은 아래 그림을 참조하십시오.
    enter image description here
+1

UIView 프레임을 UIView.center.x = UIButton.center.x + 20처럼 UIButton에 맞게 설정하고 단추가 움직일 때 업데이트하면 항상 단추와 함께 움직입니다. –

+0

Son 내 코드를 확인하십시오. 잘 작동합니다. – user3182143

답변

1

나는 버튼과 부모 투명 UIView의에서보기를 캡슐화합니다. 팬 제스쳐를 추가하고 주위로 움직이면 ... 둘 다 움직일 것입니다.

+0

이 솔루션을 생각해 보았습니다. 하지만 내 사용자 지정 단추는 항상 화면에 떠 다니고 다른 클래스에서 호출 할 공용 메서드가 있습니다. 귀하의 의견대로, 내가이 단추를 누르면 내가보기에 추가해야합니다, 안 그래? –

0

응용 프로그램에 대한 샘플 코드를 시도했습니다. 완벽하게 작동합니다. 버튼을 드래그하면보기가 동시에 움직입니다.

먼저 버튼과 UIView.I를 만들었습니다.

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 
@property (strong, nonatomic) IBOutlet UIButton *btnDragg; 
- (IBAction)actionDragg:(id)sender; 
@property (strong, nonatomic) IBOutlet UIView *viewDrag; 

@end 

I 버튼을 드래그하기 전에 내가 버튼을 드래그하면, 그것은 enter image description here

그런 다음 원래 위치에

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 


@synthesize btnDragg,viewDrag; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    UIPanGestureRecognizer *panRecognizer; 
    panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(wasDragged:)]; 
    panRecognizer.cancelsTouchesInView = YES; 
    [btnDragg addGestureRecognizer:panRecognizer]; 
} 


- (void)wasDragged:(UIPanGestureRecognizer *)recognizer 
{ 
    UIButton *button = (UIButton *)recognizer.view; 

    CGPoint translation = [recognizer translationInView:button]; 
    CGPoint translationView = [recognizer translationInView:viewDrag]; 
    button.center = CGPointMake(button.center.x + translation.x, button.center.y + translation.y); 
    viewDrag.center = CGPointMake(viewDrag.center.x + translationView.x, viewDrag.center.y + translationView.y); 

    [recognizer setTranslation:CGPointZero inView:button]; 
    [recognizer setTranslation:CGPointZero inView:viewDrag]; 
} 

ViewController.m, 또한보기 버튼으로 움직입니다. 이제 버튼을 드래그하면 위치가 바뀝니다. enter image description here

관련 문제