How to use Shake API in iPhone SDK 3.0?

前端 未结 3 740
后悔当初
后悔当初 2020-11-30 03:34

Apple annonced Shake API in iPhone SDK 3.0. I can not find any information regarding this new feature.

Who knows about how to use it? Any example, link will be good

相关标签:
3条回答
  • 2020-11-30 03:56

    I posted a complete 3.0 example in this thread:

    How do I detect when someone shakes an iPhone?

    0 讨论(0)
  • 2020-11-30 03:57

    Joe Hewitt recently committed some code to Three20 that utilizes the 3.0 shake event. Seems like you just need to implement some simple code within -motionBegan:withEvent: inside of your UIResponder.

    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
        if (event.type == UIEventSubtypeMotionShake) {
            ...
        }
    }
    
    0 讨论(0)
  • 2020-11-30 04:06

    The APIs you are looking for are in UIResponder:

    - (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event;
    

    Generally you just implement this:

    - (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
      if (event.type == UIEventSubtypeMotionShake) {
        //Your code here
      }
    }
    

    in your UIViewController subclass (UIViewController is a subclass of UIResponder). Also, you want to handle it in motionEnded:withEvent:, not motionBegan:withEvent:. motionBegan:withEvent: is called when the phone suspects shaking is happening, but the OS can determine the difference between a user purposefully shaking, and incidental shaking (like walking up the stairs). If the OS decides it was not a real shake after motionBegan:withEvent: is called it will call motionCancelled: instead of motionEnded:withEvent:.

    0 讨论(0)
提交回复
热议问题