4

我正在使用 XCode 为 iOS 平台开发 Cocoa 触摸应用程序,但无法找到如何实现滑动手势以允许用户向左或向右滑动手指以更改为新的ViewController(nib/xib 文件) . 我已经swapView IBAction使用按钮和模态转换完成了,并且我已经阅读了有关 Apple 的信息TouchGestureRecognizer,但我不知道如何实现允许视图更改的滑动操作。

我不想使用滚动视图,因为我有几十个视图控制器,我希望用户能够滑动浏览。

这是一个例子:

第一个视图 Controller.xib:SwipeRight- 转到第二个视图 Controller.xib

第二个视图 Controller.xib:
SwipeLeft- 转到第一个视图 Controller.xib
SwipeRight- 转到第三个视图 Controller.xib

等等等等

我以前没有使用过 UISwipe/Touch Gestures,但我使用了一种IBAction方法来使用带有模态转换的按钮切换视图(见下文):

-(IBAction)swapViews; { 
    SecondViewController *second2 =[[SecondViewController alloc initWithNibName:@"SecondViewController" bundle:nil];
    second2.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
    [self presentModalViewController:second2 animated:YES];
    [second2 release];
}

是否使用滑动来执行格式不同的类似方法?如果是这样,我该如何整理并格式化它。

谢谢你

编辑 - 根据对问题的评论回答

把它放在你的 viewDidLoad

UISwipeGestureRecognizer *swipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipeLeftDetected:)];
swipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:swipeRecognizer];
[swipeRecognizer release];

然后添加一个选择器,将以下代码粘贴到您的主...

- (IBAction)swipeLeftDetected:(UIGestureRecognizer *)sender {
    NC2ViewController *second2 =[[NC2ViewController alloc] initWithNibName:@"NC2ViewController" bundle:nil];
    second2.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    [self presentModalViewController:second2 animated:YES];
    [second2 release];
}

然后只需确保导入您正在交换使用的 otherViewController

#import "SecondViewController"

在主文件的顶部。希望这可以帮助。

结束编辑

4

2 回答 2

4

这听起来像是使用UIGestureRecognizer或更具体地说是UISwipeGestureRecognizer的最佳时机。

有关如何使用它们的更多信息,请阅读事件处理指南的手势识别器部分。

于 2011-04-16T03:01:43.593 回答
0

假设您想向左滑动以从右侧显示另一个视图。

在情节提要中,拖放一个滑动手势识别器。它将在视图控制器下方制作一个图标;将此图标拖放到要导航到的 ViewController 上。这将添加一个转场,选择自定义转场。然后创建一个 UIStoryboardSegue 类。添加以下代码:

- (void)perform {
    UIViewController* source = (UIViewController *)self.sourceViewController;
    UIViewController* destination = (UIViewController *)self.destinationViewController;

    CGRect sourceFrame = source.view.frame;
    sourceFrame.origin.x = -sourceFrame.size.width;

    CGRect destFrame = destination.view.frame;
    destFrame.origin.x = destination.view.frame.size.width;
    destination.view.frame = destFrame;

    destFrame.origin.x = 0;

    [source.view.superview addSubview:destination.view];

    [UIView animateWithDuration:0.5
                     animations:^{
                         source.view.frame = sourceFrame;
                         destination.view.frame = destFrame;
                     }
                     completion:^(BOOL finished) {
                         UIWindow *window = source.view.window;
                         [window setRootViewController:destination];
                     }];
}
于 2013-12-01T04:22:57.277 回答