これは、stackoverflowに関する私の最初の投稿です。私はiOS開発者の初心者であり、英語を母国語としないので、問題を説明するために最善を尽くします。
問題:
AppDelegateウィンドウに2つのビューを追加しましたが、次を使用して一方から他方に切り替えたいと思います。
UIView transitionFromView:toView:
最初のビュー(MainScreenView)には独自のがありViewController
ます。MainScreenView .xibファイルには、AppDelegateに実装されているメソッド「goShow」を呼び出すアクションを持つボタンがあります。その方法ではUIView transitionFromView:toView:
、2番目のビューに移行するために使用します。これまでのところ、すべてが正常に機能しています。2番目のビュー(スクロールビュー)は、AppDelegateでプログラムによって宣言され、その中に一連の画像(picturesViewController)があり、その上に。がありUIPinchGestureRecognizer
ます。
ジェスチャレコグナイザを使用して、MainScreenViewに戻ります。ここに問題があります。スクロールビューでピンチジェスチャを実行するとMainScreenView.view
、アニメーションの直前にが表示されるため、フリップアニメーションが正しく表示されません。
私が使用しているコードは次のとおりです。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
mainScreen = [[MainScreenViewController alloc] initWithNibName:@"MainScreenViewController" bundle: [NSBundle mainBundle]];
CGRect frame = self.window.bounds;
int pageCount = 10;
scrollView = [[UIScrollView alloc] initWithFrame:frame];
scrollView.contentSize = CGSizeMake(320*pageCount, 480);
scrollView.pagingEnabled = YES;
scrollView.showsHorizontalScrollIndicator = FALSE;
scrollView.showsVerticalScrollIndicator = FALSE;
scrollView.delegate = self;
[...] 'While' adding pictures to de scrollView
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];
[self.window addSubview: scrollView];
[scrollView setHidden:TRUE];
[self.window addSubview: mainScreen.view];
[self.window makeKeyAndVisible];
return YES;
}
-(void) goShow{
[UIView transitionFromView:mainScreen.view
toView:scrollView
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:NULL];
[UIView commitAnimations];
}
-(void) goBackToMain {
[UIView transitionFromView:scrollView
toView:mainScreen.view
duration:0.5
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:NULL];
[UIView commitAnimations];
}
addSubview/removeFromSuperView
アニメーションが失敗するのとまったく同じ手順で、追加と削除を試し、ピンチジェスチャでアプリがクラッシュしたため、代わりに表示/非表示ビューを使用しています。おそらく同じエラーですが、その理由を見つけることができません。どんな助けでもいただければ幸いです。
ありがとう。
Ok。エイドリアンの助けを借りて、これが私の問題を解決したUIPinchGestureコードです:
[...]
UIPinchGestureRecognizer *twoFingerPinch = [[[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(goBackToMain:)] autorelease];
[scrollView addGestureRecognizer:twoFingerPinch];
-(void)goBackToMain:(UIPinchGestureRecognizer *)recognizer {
if (recognizer.state == UIGestureRecognizerStateEnded)
{
[UIView transitionFromView:scrollView
toView:mainScreen.view
duration:0.4
options:UIViewAnimationOptionTransitionFlipFromRight | UIViewAnimationOptionShowHideTransitionViews
completion:nil];
[UIView commitAnimations];
}