我使用初始ViewController將項目創建爲Single View Application;將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];
}