2011-09-15 4 views
1

ページ・スクロール・ビューを持つView Controllerがあり、ユーザーにデータ・ページを表示しています。私は次の/前のページへのscollingの途中でユーザがデバイスを回転させたときにスクロールビューをページにスナップすることに問題があります。UIViewControllerのリフレッシュ・インタフェースの向き

ネイティブフォトビューアのアプリでは、スクロール中に回転が本質的に無効になっています。私はこの振る舞いを模倣しようとしています。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation 
{ 
    if (isScrolling) 
     return interfaceOrientation == self.interfaceOrientation; 
    return YES; 
} 

問題は、私が自分の向きを変更する準備ができていることをランタイムに伝えるために何らかの方法が必要なことです。何かはsetNeedsLayoutのようなものですが、View Controllerのものです。

- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView 
{ 
    isScrolling = NO; 
    //something to get the interface orientation updated 
} 

これは小さな問題ですが、それはナットを運転しています。何か案は?

+0

独自のvarを作成する代わりに、UIScrollviewでtrackプロパティを使用できますか? – tapi

+0

あなたは 'scrollViewDidEndScrollingAnimation:'の中で 'shouldAutorotateToInterfaceOrientation:'を手動で呼び出そうとしましたが、あなたの問題に役立つとは思いませんか? – KDaker

+0

UIScrollViewには "isScrolling" iVarがありませんが、私はこの目的でのみ使用していました。 –

答えて

4

純粋な推測ですが、おそらくこれを試してみてください。

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { 
    [[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications]; 
} 

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { 
    [[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
} 
+0

完璧!ありがとう! –

関連する問題