我花了整个周末试图弄清楚为什么我的手势不起作用。当我作为模型视图呈现时,手势正在工作,但当我添加为子视图时,手势无法正常工作。是否有任何理由只有在作为子视图添加时才能正常工作。
此代码有效:
myVC = [[FullViewController alloc] initWithNibName:@"FullViewController" bundle:nil];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController: myVC];
navigationController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:navigationController animated:YES];
navigationController.view.superview.bounds = CGRectMake(0,0,1024,724);
此代码不起作用:
myVC = [[FullViewController alloc] initWithNibName:@"FullViewController" bundle:nil];
myVC.view.frame = CGRectMake(0, 0, 1024, 724);
myNavCtrl = [[UINavigationController alloc] initWithRootViewController:myVC];
[self.view addSubview: myNavCtrl.view];
myNavCtrl.view.frame = CGRectMake(0, -20, 1024, 675);
手势识别码:
swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeLeft:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];
任何帮助都是学徒。
答案 0 :(得分:0)
在我看来,superview不允许触摸或用户交互。无法确切地说明为什么使用您提供的代码片段,但您可以尝试向超级视图添加手势识别器,看看是否有效,如果没有,则问题出在superview上。
它可以作为模态,因为它根本不使用其他视图。
答案 1 :(得分:0)
没有看到handleSwipeLeft细节:
看起来您正在设置UIGestureRecognizer并告诉它调用选择器/方法:handleSwipeLeft。
您应该在View Controller中声明UIGestureRecognizer,但是将目标设置为UIView子类,然后在UIView子类中实现handleSwipeLeft。
希望有效