我在iMessage扩展中有一个非常基本的视图控制器。 (当然放大视图)。我知道你不能有紧凑的视图键盘输入...iMessage扩展:子视图控制器中的UITextView,滚动行为有多个问题
UITextView被限制在它上面的元素,并在它下面。它有一个高度和宽度。约束都是按顺序的,并没有被破坏。
界面构建器中textview的所有选项都保留为DEFAULTS。与UITextView的发生
以下问题:
当我开始编辑,光标几乎不可见。 (在场地的底部,垂直切断一半)。
键入第一个字母会将光标移动到文本视图的垂直中心。
放入一个新行然后是一个字符,将光标放回原位。
然后在后面输入后续字符会将光标重新带到垂直中心。而其他所有角色再次将整个文本视图滚动到底部。所以你在每次击键时都会出现这种奇怪的反弹行为。
当我滚动时,右侧的滚动条视觉提示并不反映文本视图的正确高度。 (滚动条仅下降了一半 - 文本视图的高度。)
我期待的UITextView在默认情况下是这样工作的:
光标应该去的顶部文本视图,当激活和编辑。
在新行后输入键时,文本视图不应该跳转。
垂直滚动条指示器应显示文本字段的全部范围,而不是其中的一半。
所以,显然文本视图内部的滚动视图有一个问题,找出事物的大小。
有谁知道,如果这是一个iMessage特定问题,或者是否有人在iMessage之外也有这个问题,以及如何解决?
视频问题的演示: https://youtu.be/1bkvHnkXLWM
UPDATE:我使用的子视图控制器嵌入我的视图控制器内根控制器。我尝试了一个空白的Hello World应用程序,并且默认情况下UITextView正常工作。所以这个问题与我嵌入子视图控制器的方式有关。
这是我使用嵌入我的子视图控制器代码:
- (void)showViewController:(UIViewController*)vcToShow isPop:(BOOL)isPop
{
NSLog(@"Presenting Controller: %@", vcToShow);
[self.activeVC willMoveToParentViewController:nil];
[self addChildViewController:vcToShow];
vcToShow.view.translatesAutoresizingMaskIntoConstraints = NO;
vcToShow.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.rootView addControls:@[vcToShow.view]
align:VerticalAlignStretchToFullHeight];
UIViewController* currentVC = self.activeVC;
self.activeVC = vcToShow;
vcToShow.view.alpha = 0.0f;
[self transitionFromViewController:currentVC
toViewController:vcToShow
duration:0.3
options:UIViewAnimationOptionTransitionNone
animations:^{
vcToShow.view.alpha = 1.0f;
}
completion:^(BOOL finished) {
[currentVC removeFromParentViewController];
[vcToShow didMoveToParentViewController:self];
[self updateScreenState];
if (isPop) {
[self removeReferenceToController:currentVC];
}
}];
}
只是胡乱猜测,但可能它是行:' vcToShow.view.translatesAutoresizingMaskIntoConstraints = NO;'?您稍后使用自动调整大小的掩码,是不是应该设置为“是”? –
嗨。将更改TransAutoresizingMaskIntoConstraints更改为YES,对UITextView没有任何影响。谢谢。 – Alex