簡體   English   中英

UITextView setContentOffset:layoutSubviews中的CGPointZero在iOS8中不起作用

[英]UITextView setContentOffset:CGPointZero in layoutSubviews doesn't work in iOS8

我有一個擴展UIViewPopupView PopupView我有一個UITextView
PopupView顯示時,我的UITextView不會從第一行開始(它向下滾動一點點)
所以我使用下面的代碼在PopupView出現后將UITextView滾動到頂部

- (void)layoutSubviews{
    [super layoutSubviews];

    [self.contentTextView setContentOffset:CGPointZero animated:NO];
}

它在iOS9(設備和模擬器)中運行良好,但在iOS8中不起作用
任何想法來解決它。 任何幫助將非常感謝

UPDATE

我發現drawRect在layoutSubviews之后被調用,如果我在其中setContentOffset:CGPointZero ,它將工作

-(void)drawRect:(CGRect)rect{
    [self.contentTextView setContentOffset:CGPointZero];
}

但我找到了drawRect的目的:

drawRect: - 如果您的視圖繪制自定義內容,請實現此方法。 如果您的視圖沒有執行任何自定義繪圖,請避免覆蓋此方法。

在我的情況下使用沒有layoutSubviews drawRect是否layoutSubviews

根據@longpham指令, drawRect()將使用GPU,因此它並不好。 這是解決我的問題的解決方案

-(void)awakeFromNib{
    [super awakeFromNib];
    [self layoutIfNeeded]; // call layoutIfNeeded here to make layoutSubviews get called whenever layout change
}
- (void)layoutSubviews{
    ...
    [self.contentTextView setContentOffset:CGPointZero];
}

它對我有用

- (void)drawRect:(CGRect)rect {

    self.textView=[[UITextView alloc] initWithFrame:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];

    [self addSubview:self.textView];

} 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM