[英]UITextView setContentOffset:CGPointZero in layoutSubviews doesn't work in iOS8
我有一個擴展UIView
的PopupView
。 在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.