2016-05-11 6 views
1

Ich habe eine PopupView, die UIView erweitert. In PopupView habe ich eine UITextView.
Wenn die PopupView Show, meine UITextView nicht auf den ersten Linie läuft (es ein wenig nach unten scrollen)
So verwende ich den folgenden Code, um die UITextView nach oben nach PopupView erscheintUITextView setContentOffset: CGPointZero in layoutSubviews funktioniert nicht in iOS8

- (void)layoutSubviews{ 
    [super layoutSubviews]; 

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

Es blättern funktioniert gut in iOS9 (sowohl Gerät und Simulator), aber es funktioniert nicht in iOS8
Jede Idee, es zu beheben. Jede mögliche Hilfe würde geschätzt großes,

UPDATE

sein ich, dass drawRect nach layoutSubviews gecallt gefunden und wenn ich setContentOffset:CGPointZero hinein, wird es

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

arbeiten Aber ich fand den Zweck drawRect :

drawRect: - Implementieren Sie diese Methode d Wenn Ihre Ansicht benutzerdefinierten Inhalt zeichnet. Wenn Ihre Ansicht keine benutzerdefinierte Zeichnung erstellt, überschreiben Sie diese Methode.

Ist es gut zu verwenden drawRect ohne layoutSubviews in meinem Fall?

+0

Probieren Sie es auf 'awakeFromNib'. –

+0

@longpham Ich lege es in 'watchFromNib' und es funktioniert nicht in iOS8 und iOS9 –

+0

Können Sie den Screenshot für Ihr Problem zeigen. –

Antwort

1

es für mich gearbeitet

- (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

hast du in iOS8 eingecheckt? –

+0

yes.i checked i t iOS8 und es funktionierte für mich –

+0

es funktioniert, aber meine aktuelle Textansicht ist in der XIB-Datei. Haben Sie irgendeine Lösung für mich, um die Textansicht in xib-Datei weiter zu verwenden –

2

Nach @longpham Anweisung wird die drawRect() GPU verwenden, so dass es nicht gut ist. Hier ist die Lösung, die mein Problem löst

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