我有一個視圖,在屏幕上有三個UIScrollViews。我想隨機滾動UIScrollViews到不同的位置,每當用戶搖動iPhone,但我無法完成。
我在我的ViewController類中實現了以下功能來檢測和處理搖動手勢,3個UIScrollViews也屬於同一個類。檢測到搖動手勢,但UIScrollViews不會更改。我究竟做錯了什麼??
我已經試過motionBegan和motionEnded。
-(BOOL)canBecomeFirstResponder {
return YES;
}
-(void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self becomeFirstResponder];
}
- (void)viewWillDisappear:(BOOL)animated {
[self resignFirstResponder];
[super viewWillDisappear:animated];
}
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event
{
if (motion == UIEventSubtypeMotionShake)
{
int randomTag = arc4random() % [dirContents count];
CGRect nextImageView = [[scrollView1 viewWithTag:2] frame];
[scrollView1 scrollRectToVisible:nextImageView animated:YES];
randomTag = arc4random() % [dirContents count];
nextImageView = [[scrollView2 viewWithTag:4] frame];
[scrollView2 scrollRectToVisible:nextImageView animated:YES];
randomTag = arc4random() % [dirContents count];
nextImageView = [[scrollView3 viewWithTag:4] frame];
[scrollView3 scrollRectToVisible:nextImageView animated:YES];
NSLog(@"Shake Detected End");
}
}
謝謝
我還沒有嘗試過使用SetContentOffset,因爲我曾經使用過scrollRectToVisible。也許我可以試試看。 我該在哪裏準確地使用這條線?我不明白。 [self performSelectorOnMainThread:@selector(motionEnded)withObject:nil waitUntilDone:NO]; – 2010-08-09 15:25:31
scrollRectToVisible是一個棘手的韌皮。如果它認爲定義的矩形是可見的,它將忽略該請求,並且我發現它在很多場合都沒有做到我想要的。 setContentOffset通常修復它。 – mtrc 2010-08-09 15:30:50
是的,它與SetContentOffset一起工作。謝謝samsam和mtc06! 雖然我會喜歡它與scrollRectVisible一起工作。 – 2010-08-09 15:44:27