2016-05-11 2 views
1

У меня есть PopupView, который расширяет UIView. В PopupView У меня есть UITextView.
Когда PopupView шоу, мой UITextView не начинается в первой строке (она прокручивать немного вниз)
Поэтому я использую следующий код для прокрутки UITextView вверх после PopupView появляетсяUITextView setContentOffset: CGPointZero в layoutSubviews не работает в iOS8

- (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: - Внедрить этот метод d, если ваш вид рисует пользовательский контент. Если в вашем представлении нет специального рисунка, избегайте переопределения этого метода .

Полезно ли использовать drawRect без layoutSubviews в моем случае?

+0

Попробуйте на 'awakeFromNib'. –

+0

@longpham Я положил его в 'awakeFromNib', и он не работает как в iOS8, так и в iOS9. –

+0

. Вы можете показать скриншот для своей проблемы. –

ответ

1

он работал для меня

- (void)drawRect:(CGRect)rect { 

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

    [self addSubview:self.textView]; 

} 
+0

вы проверили iOS8? –

+0

yes.i проверено i t iOS8, и он работал для меня –

+0

, но он работает, но мой текущий текст находится в файле xib. у вас есть какое-то решение для продолжения использования textview в файле xib. –

2

Согласно инструкции @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]; 
} 
Смежные вопросы