사용자가 UIPanGestureRecognizer를 사용하여 UIImageView를 화면 주위로 끌 수있는 프로그램을 만들려고합니다. 나는 몇 가지 다른 방법을 시도했지만 그것을 알아낼 수 없습니다. 보낸 사람/요청자를 만들어야하는지 잘 모르겠습니다. 내 이해 UIImageView 제스처를 처리 할 수있는 UIView에 배치해야합니다. 내 프로그램에는 View Controller-AdvancedViewController1이 있습니다. AdvancedView1이라는 UIView를 만들었습니다. Interface Builder에서 AdvancedViewController에 AdvancedView1을 삽입했습니다. 1. 다음은 컨트롤러 및 뷰에 대한 .h
및 .m
파일입니다. 관련된 코드 만 포함 시켰습니다. 내가 가깝고 내 코드를 수정하는 방법을 알려주십시오. 귀하의 도움에 미리 감사드립니다.UIPanGestureRecognizer를 사용하여 UIImageView를 이동할 수 없습니다.
AdvancedViewController1.h
#import <UIKit/UIKit.h>
#import "AdvancedView1.h"
@interface AdvancedViewController1 : UIViewController {
UIWindow *window;
AdvancedView1 *advancedView1;
UIImageView * option1;
}
@property (retain) IBOutlet AdvancedView1 *advancedView1;
@property (retain) IBOutlet UIImageView *option1;
@end
는 IB에서 나는 움직일 수 할있는 UIImageView에있는 UIView 및 옵션 1에 AdvancedView1에 함께 IBOutlet을 연결했다.
AdvancedViewController.m
#import "AdvancedViewController1.h"
#import "AdvancedView1.h"
@implementation AdvancedViewController1
@synthesize advancedView1;
@synthesize option1
- (void)viewDidLoad {
UIGestureRecognizer *pangr = [[UIPanGestureRecognizer alloc] initWithTarget:self.advancedView1 action:@selector(pan:)];
pangr.delegate = self;
[self.advancedView1 addGestureRecognizer:pangr];
[pangr release];
[super viewDidLoad];
}
AdvancedView1.h
#import <UIKit/UIKit.h>
#import "AdvancedViewController1.h"
@class AdvancedView1;
@interface AdvancedView1 : UIView{
CGPoint* origin;
}
@property (nonatomic) CGPoint* origin;
@end
AdvancedView1.m
#import "AdvancedView1.h"
#import "AdvancedViewController1.h"
@implementation AdvancedView1;
@synthesize origin;
- (void)pan:(UIPanGestureRecognizer *) gesture
{
if ((gesture.state == UIGestureRecognizerStateChanged) ||
(gesture.state == UIGestureRecognizerStateEnded)) {
CGPoint translation = [gesture translationInView:self];
gesture.origin = CGPointMake(gesture.origin.x+translation.x, gesture.origin.y+translation.y);
[gesture setTranslation:CGPointZero inView:self];
}
응답 해 주셔서 감사합니다. 가까이 가고 있지만 몇 가지 질문이 있습니다. 터치했을 때 UIView가 패닝되지만 팬 제스처를 끝내면 뷰가 사라집니다. 왜 그런가? 또한, 내가 뭘하려고 UIView 내에서 UIImageView 허용 이동,하지만 지금은이 코드로 전체 UIView 이동합니다. 이것이 가능한가? 또는 여러 UIView를 만들어 각 이미지를 이동할 수 있도록 각각 하나의 이미지를 넣어야합니까? – JulianF
bravo는'[self setUserInteractionEnabled : YES]'경고를 추가합니다. 나는 내가 추측하고있는 약간의 시간을 구했다. – NSTJ