Чтобы проверить, не потрясен ли телефон, вашему классу придется использовать протокол UIAccelerometerDelegate.
Например:
@interface myTableViewClass : UITableView <UIAccelerometerDelegate>
Затем вы должны быть в состоянии определить, когда телефон встряхнулся (я использую это в моем viewDidLoad):
[[UIAccelerometer sharedAccelerometer] setDelegate:self];
[[UIAccelerometer sharedAccelerometer] setUpdateInterval:0.1];
Как только пользователь встряхивает телефон, вы можете творить чудеса следующим способом:
- (void)accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
if(fabsf(acceleration.x) > 2.2 || fabsf(acceleration.y) > 2.2 || fabsf(acceleration.z) > 2.2){
//The user has shaken the iPhone
}
}
Очевидно, что вы можете изменить интервал для более частой проверки и изменения параметров акселерометра: метод didAccelerate в соответствии с вашими потребностями.