我在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