日期:2011.04.09
原:手势操作的一些规律
*父view注册手势,则当手势操作在子view的时候,父view仍然能够收到消息。
*如果子view也注册了手势操作,则父view将无法收到手势操作了。可以猜测为,如果手势操作有下层拦截,则不会向上传递了。
*使用UINavigationController的push加入子Controller,那么即使RootController注册了手势操作,如果在子Controller进行手势操作时,Root也无法收到手势操作。
*在UITableView上注册手势操作也能成功。但是,由于UITableView自身有很多手势操作,因此可能会产生冲突,导致操作不受控制。例如,如果注册左右滑动的手势操作,则当进行左右操作时,很可能触发点击操作.
*如果某viewController覆盖了- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event等操作,则对于手势操作没有任何影响。即仍然可以收到手势操作。同样,如果子view覆盖touchesBegan等函数,也不会妨碍父view接受手势操作的。总之,覆盖touchesBegan等函数,不会对手势操作有任何影响。
*一些基本步骤:
- (void)viewDidLoad {
UISwipeGestureRecognizer *recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGestureRecognizer:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
recognizer.numberOfTouchesRequired = 1;
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGestureRecognizer:)];
[recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)];
recognizer.numberOfTouchesRequired = 1;
[[self view] addGestureRecognizer:recognizer];
[recognizer release];
}
- (void)handleSwipeGestureRecognizer:(UISwipeGestureRecognizer *)recognizer {
NSLog(@"SecondViewGestureRecognizer");
}
+++++