これは初心者の質問ですので、事前にお詫び申し上げます。インターフェイスビルダでオフスクリーンでレイアウトしたUIViewがあります。ユーザーがボタンを押すと、画面上にこのビューをアニメートしたいと思います。それは動作しますが、私はUIViewのボタンと対話できません。実際にオブジェクトが位置を保持しているので、UIViewsのレイヤーの位置を設定しようとしましたが、UIViewメニューで余分な81ピクセルを左側に表示しています。これが起こると、私はボタンとやりとりすることができますが、私はそれを画面の右側と一致させる必要があります。ここに私のコードはopenMenuボタンをIBActionである:iPad - 画面上にアニメーション表示されているユーザーの操作はありません
animationDidStop方法でCABasicAnimation *moveView = [CABasicAnimation animationWithKeyPath:@"position"];
moveView.delegate = self;
moveView.duration=0.5;
// If the menu is displayed, close it!
CGPoint currentPosView = [[entirePage layer] position];
CGPoint destView;
[moveView setFromValue:[NSValue valueWithCGPoint:currentPosView]];
if (menuDisplayed) {
// Move right to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y + 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
// Otherwise, open it
} else {
// Move left to our destination
destView.x = currentPosView.x;
destView.y = currentPosView.y - 81;
[moveView setToValue:[NSValue valueWithCGPoint:destView]];
}
// Animate the view
[[entirePage layer] addAnimation:moveView forKey:@"move"];
// Set the final position of our layer
[[entirePage layer] setPosition:destView];
menuDisplayed = !menuDisplayed;
そして:
CGPoint currentPosMenu = [[menuBar layer] position];
if (menuDisplayed) {
currentPosMenu.x -= 81;
} else {
currentPosMenu.x += 81;
}
[[menuBar layer] setPosition:currentPosMenu];
ヘルプ???
私は最近同様の問題がありました。親ビューの境界の外側に描画されたビューは、相互作用できません。また、Core Animationはアニメーションのみを行うことも間違いありません。実際のプロパティは変更されません。 userInteractionEnabledを試してみてください。これでうまくいかない場合は、アニメーションが終了したら汚れてスーパービューからビューを削除し、直後にもう一度追加することができます。 –
このプロジェクトの締め切り日は近づいていますが、回避策が見つかりました(しかし、私が望むものではありません)。 UIViewを最初に表示してから、すべてを表示外にスライドさせます。タッチインタラクションは、メニューが戻ったときに機能しますが、別の方法が必要です。 – Jacob