我创建了一个RootViewController / RootView:
这符合良好做法。
问题:
当主内容视图显示表单时,有一个实用程序可以在选择一个字段时为该视图的框架设置动画,否则该字段会被键盘遮挡。这一直一直运行到iOS 8.0.2
我尝试了什么:
[UIScreen mainScreen].keyWindow
。工作,但会导致一些我不想要的副作用。 问题:
iOS8.0.2中另一个视图中包含的UIViewControllers动画改变了什么。这似乎是非常基础的东西。
动画框架将输入字段移出键盘的代码:
看起来像这样:
- (void)scrollToAccommodateField:(UIView *)view
{
UIView *rootView = [UIApplication sharedApplication].keyWindow.rootViewController.view;
CGPoint position = [view convertPoint:view.bounds.origin toView:rootView];
CGFloat y = position.y;
CGFloat scrollAmount = 0;
CGFloat margin = 25;
CGSize screenSize = [self screenSizeWithOrientation:[UIApplication sharedApplication].statusBarOrientation];
CGSize accessorySize = CGSizeMake(_view.width, 44);
CGFloat maxVisibleY = screenSize.height - [self keyboardSize].height - accessorySize.height - margin;
if (y > maxVisibleY)
{
scrollAmount = maxVisibleY - y;
CGFloat scrollDelta = scrollAmount - _currentScrollAmount;
_currentScrollAmount = scrollAmount;
[self scrollByAmount:scrollDelta];
}
else
{
if (_currentScrollAmount != 0)
{
_currentScrollAmount = 0;
[UIView transitionWithView:_view duration:0.30
options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseOut animations:^
{
_view.frame = [_view bounds];
} completion:nil];
}
}
}
更新
我已经安装了TPKeyboardAvoiding pod并且它的工作非常好。 。保持开放,以防其他人感兴趣。