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

Gesturerecognizerコード:

swipeLeft = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeLeft:)];
[swipeLeft setDirection:UISwipeGestureRecognizerDirectionLeft];
[self.view addGestureRecognizer:swipeLeft];

どんな助けでも見習いになります。

4

2 に答える 2

0

スーパービューがタッチやユーザーの操作を許可していないように見えます。提供するコードスニペットで理由を正確に言うことはできませんが、ジェスチャレコグナイザーをスーパービューに追加して、それが機能するかどうかを確認できます。機能しない場合は、スーパービューに問題があります。

他のビューをまったく使用しないため、モーダルとして機能します。

于 2013-02-11T18:19:33.080 に答える
0

handleSwipeLeftの詳細が表示されない場合:

UIGestureRecognizerを設定し、selector /メソッド:handleSwipeLeftを呼び出すように指示しているようです。

View ControllerでUIGestureRecognizerを宣言する必要がありますが、ターゲットをUIViewサブクラスとして設定してから、UIViewサブクラスにhandleSwipeLeftを実装します。

それがうまくいくことを願っています

于 2013-02-11T18:46:57.890 に答える