说我有两个视图控制器:xVC和yVC。我使用了摇动API,并在xVC中使用了-(void)motionBegan-(void)motionEnded:-(void)motionCancelled方法。发生的情况是摇动设备后会触发一个简单的动画。现在的事情是,即使我打开了yVC,也就是将yVS.view添加为子视图时,也会触发该动画。我正在寻找的是一些可以在-(void)motionEnded:中使用的if条件,例如:

if(yVC == nil)
{
     //trigger animation
}


我的意思是,当yVC可见时,摇动不应起作用。我怎么做?请帮忙。

最佳答案

我已经看到和使用的一般建议是询问一个视图是否具有非nil window属性:

if( ! yVC.view.window) {
  // trigger animation
}


但是请注意,这并不总是等同于可见。尽管在大多数应用中,它的性能都可以达到您想要的效果(不准确的基本情况是,当其他视图完全遮住它时,但这仍然可以满足您的需求)

10-01 06:35