2

我花了整个周末试图弄清楚为什么我的手势不起作用。当我作为模型视图呈现时,手势正在工作,但是当我添加为子视图时,手势不起作用。是否有任何理由为什么它仅在添加为子视图时才起作用。

此代码有效:

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];

任何帮助都会被学徒。

4

2 回答 2

0

没有看到 handleSwipeLeft 细节:

看起来您正在设置 UIGestureRecognizer 并告诉它调用选择器/方法:handleSwipeLeft。

您应该在您的视图控制器中声明您的 UIGestureRecognizer,但将目标设置为您的 UIView 子类,然后在您的 UIView 子类中实现 handleSwipeLeft。

希望有效

于 2013-02-11T18:46:57.890 回答
0

在我看来,超级视图不允许触摸或用户交互。无法准确说明您提供的代码片段的原因,但您可以尝试将手势识别器添加到超级视图,看看是否有效,如果不起作用,则问题出在超级视图。

它作为模态工作,因为它根本不使用其他视图。

于 2013-02-11T18:19:33.080 回答