好吧,這是一個新手問題,所以我提前道歉。我有一個UIView,我在界面生成器中放置在屏幕外。當用戶按下按鈕時,我想在屏幕上爲此視圖製作動畫。它的工作原理,但我不能與UIView中的任何按鈕進行交互。我已經讀過,當你設置動畫時,只有視圖被移動,並且實際的對象保留了它們的位置,所以我試圖設置UIViews圖層的位置,但是它導致我的UIView菜單在左邊顯示額外的81個像素。發生這種情況時,我可以與按鈕交互,但我需要將它與屏幕右側齊平。下面是我在IBAction爲代碼在openMenu按鈕:iPad - 沒有用戶互動在屏幕上查看動畫
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;
然後在animationDidStop方法:
CGPoint currentPosMenu = [[menuBar layer] position];
if (menuDisplayed) {
currentPosMenu.x -= 81;
} else {
currentPosMenu.x += 81;
}
[[menuBar layer] setPosition:currentPosMenu];
幫助???
我最近有類似的問題。在其父視圖邊界之外繪製的視圖不能與之交互。核心動畫只做動畫也是正確的。它不會改變實際的屬性。嘗試試用userInteractionEnabled。如果這不起作用,那麼一旦動畫完成後,您可能會變髒並從其超級視圖中移除視圖,然後立即再次將其添加。 – 2010-12-08 22:05:13
該項目的截止日期臨近,但我找到了一個解決方法(但它不是我想要的)。我最初顯示UIView,然後將所有內容都滑出視圖。當菜單被帶回時,觸摸交互工作,但必須有另一種方式。 – Jacob 2010-12-08 22:40:24