2015-08-26 34 views
6

top benim programlı olarak viewDidLoad amaçlanan işleri üstüne UITextView kaydırma yöntemine:iOS 9 kaydırma UITextView, iOS 7 ve/veya 8'de

[self.someTextView scrollRangeToVisible:NSMakeRange(0, 0)]; 

Şimdi sadece benim diğer bazı çerçeveye yükler. Benim tahminim UIEdgeInsetsMake(0, 0, 65, 0)

Nasıl bu işi> = iOS9 yapabilirim benim contentOffset için yüklüyor edilir?

Not: Zaten UITextView metin bunun yüksekliği görünümü var daha büyük olduğunda sorun durumlarda oluşur hiçbir sonuç


DÜZENLEME ile viewDidAppear yerleştirme denedim. Ben görünümü modally sundu ve ekran sınırları göre biraz daha büyük olduğu için UIEdgeInsets kullanın. Ancak scrollRangeToVisible hala iOS 7/8 ama iOS9 bu durum içinde, işleri

+0

sen [Kendi 'deneyin yaptı. someTextView setContentOffset: CGPointZero canlandırılmış: YES]; '. Veya willLayoutsubviews 'içinde mi kullanıyorsunuz? – anhtu

+0

Benim durumumda çalışmıyor. – soulshined

+1

"viewDidLayoutSubviews" yerine yerleştirilsin mi? – anhtu

cevap

17

deneyin ben iOS 9 aynı problem vardı viewDidLayoutSubviews

+0

için 'animated' ekleyerek yöntemi tamamlayın. Ne yazık ki, ilk olarak yanlış bir şekilde işleniyor gibi görünüyor ve sonra kendini düzeltir. Herkesin uygulamalarının kalitesini düşürmek için Apple'a teşekkür ederim. – devios1

+1

'scrollRangeToVisible:' önce kullanıldı ('' animated: 'parametresi bulunmuyor), ancak' scrollRectToVisible: 'olarak ayarlandı. – devios1

+0

Sorunumu mükemmel bir şekilde çözer. Teşekkürler! – Roger

1

Eğer

x bazı sıfırdan farklı genişlik
[self.someTextView scrollRectToVisible:CGRectMake(0, 0, x, x) animated:YES] 

kullanarak denediniz mi? Bu scrollRectToVisible: kaydırır öteye scrollRangeToVisible: daha fazla gibi görünüyor.

+1

örneğinizde, bu referansı kullanmak için 'self.someTextView.layer' olurdu, ancak benim durumumda çalışmaz. Lütfen düzenleyin, sadece oylar alamazsınız. Ya Bu aynı zamanda yaptığımı sona erdi budur sözdizimi – soulshined

5

kodunuzu yerleştirmek ve bu geçici çözüm düzelttim:

@property (nonatomic) bool workaroundIOS9Bug; 

- (void)viewDidLoad { 
    self.workaroundIOS9Bug = [[UIDevice currentDevice].systemVersion floatValue] >= 9.0; 
} 


-(void)viewDidLayoutSubviews { 
    if (self.workaroundIOS9Bug) { 
    self.textView.contentOffset = CGPointZero; 
    self.workaroundIOS9Bug = false; 
    } 
} 

anlamı, bu contentOffset bu ekstra Temizlik çalışmalarını sadece gerekli İlk kez bu alt sunumlar ortaya konuyor. Kullanıcı ekranı ne zaman döndürürse ya da görüşüyle ​​başka şeyler yapıyorsa her zaman bir acı olur.