當有人搖動iPhone時,我該如何檢測?我想在有人搖晃iPhone的時候做出反應。我不在乎他們是如何搖動它的,只是它被有力地揮動了一下。有人知道怎么發現這個嗎?
3 回答
夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
@implementation ShakingView- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event{
if ( event.subtype == UIEventSubtypeMotionShake )
{
// Put in code here to handle shake
}
if ( [super respondsToSelector:@selector(motionEnded:withEvent:)] )
[super motionEnded:motion withEvent:event];}- (BOOL)canBecomeFirstResponder{ return YES; }@end- (void) viewWillAppear:(BOOL)animated{
[shakeView becomeFirstResponder];
[super viewWillAppear:animated];}- (void) viewWillDisappear:(BOOL)animated{
[shakeView resignFirstResponder];
[super viewWillDisappear:animated];}
白衣非少年
TA貢獻1155條經驗 獲得超0個贊
// Ensures the shake is strong enough on at least two axes before declaring it a shake.// "Strong enough" means "greater than a client-supplied threshold" in G's.static BOOL L0AccelerationIsShaking(UIAcceleration* last, UIAcceleration* current, double threshold) {
double
deltaX = fabs(last.x - current.x),
deltaY = fabs(last.y - current.y),
deltaZ = fabs(last.z - current.z);
return
(deltaX > threshold && deltaY > threshold) ||
(deltaX > threshold && deltaZ > threshold) ||
(deltaY > threshold && deltaZ > threshold);}@interface L0AppDelegate : NSObject <UIApplicationDelegate> {
BOOL histeresisExcited;
UIAcceleration* lastAcceleration;}@property(retain) UIAcceleration* lastAcceleration;@end@implementation L0AppDelegate- (void)applicationDidFinishLaunching:(UIApplication *)application {
[UIAccelerometer sharedAccelerometer].delegate = self;}- (void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration {
if (self.lastAcceleration) {
if (!histeresisExcited && L0AccelerationIsShaking(self.lastAcceleration, acceleration, 0.7)) {
histeresisExcited = YES;
/* SHAKE DETECTED. DO HERE WHAT YOU WANT. */
} else if (histeresisExcited && !L0AccelerationIsShaking(self.lastAcceleration, acceleration, 0.2)) {
histeresisExcited = NO;
}
}
self.lastAcceleration = acceleration;}// and proper @synthesize and -dealloc boilerplate code@end- 3 回答
- 0 關注
- 603 瀏覽
添加回答
舉報
0/150
提交
取消
