Ios 更改键盘出现时modal UIViewController上移的距离

Ios 更改键盘出现时modal UIViewController上移的距离,ios,objective-c,ipad,uiscrollview,modalviewcontroller,Ios,Objective C,Ipad,Uiscrollview,Modalviewcontroller,我有一个UIViewController,我正在使用以下代码以模式演示它: FeedbackViewController *fvc=[[FeedbackViewController alloc] init]; fvc.delegate=self; [fvc setModalPresentationStyle:UIModalPresentationFormSheet]; [self presentViewController:fvc animated:YES completion:nil]; 当

我有一个UIViewController,我正在使用以下代码以模式演示它:

FeedbackViewController *fvc=[[FeedbackViewController alloc] init];
fvc.delegate=self;
[fvc setModalPresentationStyle:UIModalPresentationFormSheet];
[self presentViewController:fvc animated:YES completion:nil];
当点击此模式视图中的UITextField时,键盘将出现,视图将以约60像素的速度显示动画。为了确保文本字段可见,我希望视图向上移动200像素。我知道在处理多个字段时,可以在UIScrollView中滑动视图,但我想知道对于这样一个简单的情况,是否没有更直接的选项

谢谢你的阅读

替代解决方案:
我找到了一个目前适合我的解决方法。我的模态视图控制器现在是全屏的,基本上是半透明背景上的一个白色框,我呈现的ViewController没有动画。然后,在模态视图的viewwillreased方法中,我淡入半透明背景并向上滑动白色框。当模式视图被取消时,将执行相反的操作。(这还增加了一个易于响应的背景,例如“点击即可关机”)

一个相当基本的解决方案:您可以订阅来自NSNotificationCenter的
UIKeyboardWillShowNotification
通知,当您收到该通知时,您可以通过以下方式转移您的观点:

self.viewthift.frame=CGRectOffset(self.viewthift.frame,0,-100)

或者通过对框架或布局约束的任何其他操作来更改其位置。您可能还希望将其放入UIView动画块中


您还需要订阅“UIKeyboardWillHideNotification”,以便以后可以返回原始位置

谢谢你。我在使用这种方法时遇到的问题是,当用户点击键盘上的文本字段时,已经出现了动画,而键盘正在制作高达60像素的动画。在此动画发生时,调用视图帧上的任何代码似乎没有任何效果。是否使用布局约束?此视图未选中“自动布局”。另外,有趣的是,如果我在动画上加一个延迟,比如+100px,当键盘第一次出现时,视图立即偏移-100px,然后在延迟后,它返回到“正常”位置。有一个标志可以避免这种情况。