【问题标题】:UITextView contentoffset update not workingUITextView contentoffset 更新不起作用
【发布时间】:2012-02-28 11:39:25
【问题描述】:

我正在尝试通过适当地设置内容偏移来垂直对齐 UITextView。

当我更改 textView 的文本时,我正在调用以下代码:

- (void)setCenterVerticalAlignmentForTextView:(UITextView*)textView {
    CGFloat topCorrect = ([textView bounds].size.height - [textView contentSize].height * [textView zoomScale])/2.0;
    topCorrect = (topCorrect < 0.0 ? 0.0 : topCorrect );
    textView.contentOffset = CGPointMake(0,-topCorrect);
}

这在 UIView 第一次显示在屏幕上时完美运行。

但是,如果我更改 textView 中的文本并再次调用此函数,则设置 contentOffset 的函数的最后一行似乎没有任何区别。无论我设置什么内容偏移都变为(0,0)。

在尝试重置 contentOffset 或 contentInset 之前,我是否需要做一些事情来重置它?

谢谢大家,非常感谢任何帮助。

邓克斯

【问题讨论】:

    标签: objective-c ios xcode uitextview


    【解决方案1】:
    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text;
    

    如果在 textview 中发生任何文本更改,它会调用这个 deligate 可以在其中编码

    【讨论】:

    • 谢谢,但这并不能解决问题。仅当用户更改文本视图中的文本时才调用此方法,在这种情况下,它不是用户可更新的文本视图。即使调用了此方法,我认为它也无法解决 contentOffset 未正确重置的问题。还是谢谢。
    • 你在哪里调用该函数意味着 viewdidload 或视图将出现
    • 每当我以编程方式更改 uitextview 的内容时,我都会调用它。在单击各种按钮后会发生这种情况。
    【解决方案2】:

    This answer 真的帮助了我。它不漂亮,但它有效!首先通过设置 0,0 重置。

    CGPoint offset = CGPointMake(0, self.textView.contentSize.height - 
                                    self.textView.frame.size.height);
    [self.textView setContentOffset: CGPointMake(0,0) animated:NO]; 
    [self.textView setContentOffset:bottomOffset animated:YES]; 
    

    【讨论】:

      猜你喜欢
      • 2013-10-19
      • 2015-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-06
      • 2014-05-21
      相关资源
      最近更新 更多