iPhone と iPad の両方で動作する UIPageViewController ベースのアプリを開発しています。iPhone では、コントローラーのスパインの位置が常に UIPageViewControllerSpineLocationMin に設定されているため、問題はありません。ただし、iPad では、デバイスの向きが横に設定されている場合、スパインの位置を UIPageViewControllerSpineLocationMid に設定する必要があります。
コントローラーを横向きにロードしたときにのみ奇妙な問題が発生します。次のビデオで状況を説明します.. YouTubeVideo
ご覧のとおり、コントローラーを縦向きにロードしたとき、および横向きにロードしたときにデバイスを回転させた後でも、すべてが完全に機能します。
どこに問題があるのか 本当にわかりません。コントローラーをロードするために使用するコードは次のとおりです。
if (chapter.controllers) {
currentPage = [chapter bookPageForCharIndex:location];
//Load the correct controller for the bookmark page
NSArray *array = nil;
if (currentPage >= 0 && currentPage < chapter.controllers.count) {
if (UIDeviceOrientationIsLandscape([[UIDevice currentDevice]orientation]) && UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad) {
[self setDoubleSided:YES];
if (chapter.controllers.count > currentPage+1) {
array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],[chapter.controllers objectAtIndex:currentPage+1],nil];
}
else {
array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],[[[LSBookPageViewController alloc]init]autorelease],nil];
}
}
else {
array = [[NSArray alloc]initWithObjects:[chapter.controllers objectAtIndex:currentPage],nil];
}
}
else {
return;
}
[self playSoundsOfChapter:chapter];
if (isRestarting) {
[self setViewControllers:array
direction:UIPageViewControllerNavigationDirectionReverse
animated:YES
completion:nil];
isRestarting = NO;
}
else {
[self setViewControllers:array
direction:UIPageViewControllerNavigationDirectionForward
animated:YES
completion:nil];
}
[array release];
}