在 UITextView 编辑时移动 UIView

Posted

技术标签:

【中文标题】在 UITextView 编辑时移动 UIView【英文标题】:Shifting UIView while UITextView is editing 【发布时间】:2012-05-27 20:20:16 【问题描述】:

我有一个很大的评论字段,即UITextView。由于出现了键盘,而 UITextField 几乎占了整个视图的一半,用户几乎看不到该字段。我想做的是当键盘出现时(即UITextView 正在编辑)我想将视图向上移动以使其完全可见且用户友好。

【问题讨论】:

【参考方案1】:

你可以使用

UITextViewTextDidBeginEditing

重新排列视图中的项目。并使用

– bringSubviewToFront:

将 textview 置于最前面。

【讨论】:

不,– bringSubviewToFront: 不会在键盘前移动任何东西。实际上,没有什么能做到这一点。 好的,在UITextViewTextDidBeginEditing 方法中,将文本框移动到屏幕顶部,将其置于其他所有内容之上,如果需要,调用-becomeFirstResponder,最后进行编辑方法将其移回原来的位置。【参考方案2】:

浏览了复杂无用的代码后,我在这里找到了一个快速的解决方案:

https://***.com/a/5221243/1139419

感谢 Dan Ray,这里的答案非常温和地处理了这种情况

关于:调用这个函数对我来说并没有什么魅力

-(void)scrollToView:(UIView *)view 
    CGRect theFrame = view.frame;
    float y = theFrame.origin.y - 15;
    y -= (y/1.7);
    [self scrollToY:-y]; 

所以我编辑了这个函数:

-(void)scrollToView:(UIView *)view withCoefficient:(CGFloat)coeff

    CGRect theFrame = view.frame;
    float y = theFrame.origin.y;
    y -= (y/coeff);
    [self scrollToY:-y];

进入这个。这样我可以尝试滑动主视图的系数是合适的。不是 1.7,而是 2 为我带来了魅力。请访问链接以获取完整解决方案。另请注意,如果存在,您可能还想为您的 UINavigationController 应用相同的内容;

-(void)textViewDidBeginEditing:(UITextView *)textView

    [self.view scrollToView:textView withCoefficient:2.0];
    [self.navigationController.view scrollToView:textView withCoefficient:2.0];

【讨论】:

以上是关于在 UITextView 编辑时移动 UIView的主要内容,如果未能解决你的问题,请参考以下文章

编辑开始时 UITextView 光标移动

故事板混乱:UITextView 和 UIView 不可见,UITextFields 不可编辑?

仅当键盘阻止 UITextField / UITextView 时才向上移动 UIView

iOS Swift - 动态增加 UITextView 和父 UIView 的高度

当我们编辑 UITextField 时,将带有一些 UITextFields 的 UIView 向上移动

在 UIView 上缩放 UITextView 的字体大小