【发布时间】:2013-02-21 01:38:47
【问题描述】:
我试图学习 UIPageViewControllers 并遇到了一个我无法解决的问题。
这是我试图做的:
- 步骤:
- 我只是创建了 2 个视图控制器和一个页面视图控制器 故事板。
- 然后我向
PageViewController的文件所有者添加了一些代码 对自己表现为dataSource和delegate。 - 当我跑步时,一切都很顺利。
- 我向第二个视图控制器添加了一些按钮和文本字段。
- 我跑了,工作得很好。
- 现在我向第二个视图控制器添加了一个文本视图并运行。当我尝试在文本视图中写入内容时,页面控件抖动并移动到第一个视图控制器。
有人经历过吗?
@interface AMPageViewController : UIPageViewController <UIPageViewControllerDataSource, UIPageViewControllerDelegate>
@end
实现:
#import "AMPageViewController.h"
@interface AMPageViewController ()
{
UIViewController *mainController;
UIViewController* socController;
}
@end
@implementation AMPageViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard"
bundle: nil];
mainController = (UIViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"First"];
socController = (UIViewController*)[mainStoryboard instantiateViewControllerWithIdentifier: @"Second"];
[self setViewControllers:@[mainController]
direction:UIPageViewControllerNavigationDirectionForward
animated:NO
completion:nil];
self.dataSource = self;
self.delegate = self;
// Do any additional setup after loading the view.
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
if (viewController == socController )
return mainController;
else return nil;
}
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
if (viewController == mainController )
return socController;
else return nil;
}
- (NSInteger)presentationCountForPageViewController:(UIPageViewController *)pageViewController
{
return 2;
}
- (NSInteger)presentationIndexForPageViewController:(UIPageViewController *)pageViewController
{
return 0;
}
@end
【问题讨论】:
-
页面视图控制器允许您通过在一个边缘附近滑动或点击来翻页。我猜你正在点击左侧的轻击手势识别器。
-
我不这么认为。请查看附加项目dl.dropbox.com/u/62559842/PageViewcontrollerTest.zip
-
是的,我明白你的意思了。它与使用滚动过渡有关。如果你把它改成 curl,它的行为就正常了。
-
是的,rdelmer,我之前尝试过,也有同样的疑问。但是,我必须为我正在进行的项目使用滚动动画。应该有一个解决方案,我找不到。无论如何,感谢您试一试。欣赏它。
-
好吧,祝你好运,但我感觉这是 UIPageViewController 的另一个错误。我尝试延迟调用 textField becomeFirstResponder,这导致了相同的行为,甚至没有触摸屏幕。
标签: objective-c uiviewcontroller ios6 uitextview uipageviewcontroller