8

ボタンが押されないだけのようです。

私は試した:

UIPageViewController ジェスチャー認識エンジン

ただし、ここに問題があります

UIPageViewController のページ遷移が UIPageViewControllerTransitionStyleScroll の場合

self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
NSLog(@"%@",self.pageViewController.gestureRecognizers.description);
NSLog(@"%@",self.pageViewController.gestureRecognizers.description);

単に空になります。

UIViewControllers のサブビューに、ボタンの代わりに独自の GestureRecoqnizers を追加してみました。それでもうまくいきません。

したがって、ビューにいくつかのボタンがある UIViewController を表示する UIPageViewController があります。そのボタンを押すにはどうすればよいですか?

ここでも両方のソリューションを試しました:

http://emlyn.net/posts/stopping-gesture-recognizers-in-their-tracks

どれも機能しません。まず、UIPageViewController のジェスチャ認識機能を無効にすることはできません。そのようなものがないからです。scrollView モードでは、UIPageViewController にはジェスチャ認識機能がありません。

独自のジェスチャ認識機能を独自のボタンに追加しようとしましたが、呼び出されません。

ただし、UIPageViewController で引き続きスワイプを処理する必要があります。でもタップしない。

self.pageViewController.gestureRecognizers が空であるため、UIPageViewControllers のジェスチャ認識エンジンにアクセスできません。UIPageViewController は、すべてのタップ イベントを「吸収」しているようです。だから私のボタンはそれを取得しません。

UIPageViewController の前にボタンを追加できますが、そのボタンは UIPageVIewController で処理したいスワイプ アクションを吸収します。

ところで、IOS のテンプレートを使用すると (ページ ベースのアプリを作成し、トランジションを変更して pageviewcontroller.gesturerecoqnizers をスクロールすると空になります)。

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    // Configure the page view controller and add it as a child view controller.
    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStyleScroll navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil];//Turn this to scroll view
    self.pageViewController.delegate = self;

    SDDataViewController *startingViewController = [self.modelController viewControllerAtIndex:0 storyboard:self.storyboard];
    NSArray *viewControllers = @[startingViewController];
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:NULL];

    self.pageViewController.dataSource = self.modelController;

    [self addChildViewController:self.pageViewController];
    [self.view addSubview:self.pageViewController.view];

    // Set the page view controller's bounds using an inset rect so that self's view is visible around the edges of the pages.
    CGRect pageViewRect = self.view.bounds;
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
        pageViewRect = CGRectInset(pageViewRect, 40.0, 40.0);
    }
    self.pageViewController.view.frame = pageViewRect;

    [self.pageViewController didMoveToParentViewController:self];

    // Add the page view controller's gesture recognizers to the book view controller's view so that the gestures are started more easily.
    self.view.gestureRecognizers = self.pageViewController.gestureRecognizers;
    NSLog(@"%@",self.pageViewController.gestureRecognizers.description); //This is empty
    while (false);
}
4

1 に答える 1