2011-09-01 29 views
6

Uygulama başlatıldığında otomatik olarak kaydırma yapmak için uitextview'u otomatik olarak kaydırmak istiyorum. Herkes bana detaylı bir kodla yardım edebilir mi? Ben iPhone SDK için yeni.Program aracılığıyla gezinmek için uitextview kaydırma yapmak

+0

tam olarak nasıl bunu kaydırmak istiyorsun? Sonuna veya ortasındaki bir noktaya kaydırılmasını ister misiniz? Ya da yukarıdan aşağıya doğru yavaşça kaydırılmasını ister misiniz? – mahboudz

+0

http://stackoverflow.com/questions/1088960/iphone-auto-scroll-uitextview-but-allow-manual-scrolling-also – tipycalFlow

+0

olası kopyasının üst kısmındaki aşağıya doğru yavaşça kaydırma yapmak istiyorum. ve metin görünümüne izin verilmiyor. Yani, kullanıcı metin görünümünde herhangi bir şeyi düzenleyemez. – user919050

cevap

12

.h dosyası

@interface Credits : UIViewController 
{ 
    NSTimer *scrollingTimer; 

    IBOutlet UITextView *textView; 


} 
@property (nonatomic , retain) IBOutlet UITextView *textView; 

- (IBAction) buttonClicked ; 

- (void) autoscrollTimerFired; 

@end 

.m dosyası

- (void) viewDidLoad 
{  
    // it prints the initial position of text view 
    NSLog(@"%f %f",textView.contentSize.width , textView.contentSize.height); 

    if (scrollingTimer == nil) 
    { 
     // A timer that updates the content off set after some time so it can scroll 
     // you can change time interval according to your need (0.06) 
     // autoscrollTimerFired is the method that will be called after specified time interval. This method will change the content off set of text view 
     scrollingTimer = [NSTimer scheduledTimerWithTimeInterval:(0.06) 
         target:self selector:@selector(autoscrollTimerFired) userInfo:nil repeats:YES];   
    } 
} 

- (void) autoscrollTimerFired 
{ 
    CGPoint scrollPoint = self.textView.contentOffset; // initial and after update 
    NSLog(@"%.2f %.2f",scrollPoint.x,scrollPoint.y); 
    if (scrollPoint.y == 583) // to stop at specific position 
    { 
     [scrollingTimer invalidate]; 
     scrollingTimer = nil; 
    } 
    scrollPoint = CGPointMake(scrollPoint.x, scrollPoint.y + 1); // makes scroll 
    [self.textView setContentOffset:scrollPoint animated:NO]; 
    NSLog(@"%f %f",textView.contentSize.width , textView.contentSize.height); 

} 

size yardımcı olur umarım ....

+0

evet ... yukarıdaki kod scrollingTimer, textView u içinde birçok yerde kullanmak için gereken değişkenler .h dosyası – Maulik

+0

içinde StackOver akışı kullanılabilir olacak ..: D – Maulik

+1

için teşekkürler çözüm.Özel bir klavye geliştirdim ve bunun için kodunuz UITextView'da bana yardımcı oldu. –

1

UITextView, UIScrollview'dan türetilir; böylece kaydırma konumunu -setContentOffset: animated :. kullanarak ayarlayabilirsiniz.

Saniyede 10 puan hızla kaydırmak istediğinizi varsayalım, böyle bir şey yaparsınız. Tabii

- (void) scrollStepAnimated:(NSTimer *)timer { 
    CGFloat scrollingSpeed = 10.0; // 10 points per second 
    NSTimeInterval repeatInterval = [timer timeInterval]; // ideally, something like 1/30 or 1/10 for a smooth animation 

    CGPoint newContentOffset = CGPointMake(self.textView.contentOffset.x, self.textView.contentOffset.y + scrollingSpeed * repeatInterval); 
    [self.textView setContentOffset:newContentOffset animated:YES]; 
} 

Eğer kurulum için zamanlayıcı var ve görünümü vb kaybolur ve zaman kaydırma iptal emin olun.

+0

NSTimer'i örnek değişkeni olarak bildirmeli ve -viewWillAppearAnimated: öğesinde iyi görünümlü bir tekrar aralığıyla ayarlamalısınız. Daha sonra -dealloc ve -viewWillDisappearAnimated: öğelerini geçersiz kıldığınızdan emin olun. –

+0

Size tam kodu veremem çünkü kodun ne yaptığını anladığından emin değilim. Bu kodun arkasındaki mantığı anlamaya çalıştığınızdan emin olun. Ne yapıyor, sadece belirli bir hız verilen tabana ilerlemek için. –

+0

.h dosyanızda, diğer örnek değişkenlerinizi bildirdiğiniz şekilde böyle bir şey yapmanız gerekir: NSTimer * scrollingTimer; @Maulik, zamanlayıcıyı nasıl ayarlayacağınızı ve geçersiz kılacağınızı gösterdi. –

İlgili konular