초기 ViewController가있는 단일보기 응용 프로그램으로 프로젝트를 만듭니다. 프로젝트에 subViewController를 추가하십시오. 팬 제스처가있는 UIImageView가 두 뷰 컨트롤러에 모두 추가됩니다.
그것은 viewController.m, 에서 작동하지만이 subViewController에 추가되고 서브 뷰는 뷰 컨트롤러에 하위 뷰를 같이 추가 될 때, 프로그램은 그냥 "EXC_BAD_ACCESS"로 충돌 ..팬 제스처가 하위보기에서 충돌을 일으 킵니까?
사람은 어떤 솔루션을? 여기
내 코드입니다 :ViewController.m
#import "ViewController.h"
#import "SubViewController.h"
//#define SUB
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
#ifdef SUB
SubViewController *sb = [[SubViewController alloc] init];
[self.view addSubview:sb.view];
#else
UIImageView* img_ = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"monkey_1.png"]];
img_.userInteractionEnabled = YES;
UIPanGestureRecognizer *stampPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[stampPanGesture setMinimumNumberOfTouches:1];
[stampPanGesture setMaximumNumberOfTouches:1];
[img_ addGestureRecognizer:stampPanGesture];
img_.center = self.view.center;
[self.view addSubview:img_];
#endif
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}
SubViewController.m
#import "SubViewController.h"
@interface SubViewController()
@end
@implementation SubViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIImageView* img_ = [[UIImageView alloc]initWithImage:[UIImage imageNamed:@"monkey_1.png"]];
img_.userInteractionEnabled = YES;
UIPanGestureRecognizer *stampPanGesture = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
[stampPanGesture setMinimumNumberOfTouches:1];
[stampPanGesture setMaximumNumberOfTouches:1];
[img_ addGestureRecognizer:stampPanGesture];
img_.center = self.view.center;
[self.view addSubview:img_];
}
- (void)handlePan:(UIPanGestureRecognizer *)recognizer {
CGPoint translation = [recognizer translationInView:self.view];
recognizer.view.center = CGPointMake(recognizer.view.center.x + translation.x,
recognizer.view.center.y + translation.y);
[recognizer setTranslation:CGPointMake(0, 0) inView:self.view];
}