Cover by Vandad Nahavandipoor

Safari, the world’s most comprehensive technology and business learning platform.

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required

O'Reilly logo

16.4. Detecting Shakes on an iOS Device

Problem

You want to know when the user shakes an iOS device.

Solution

Use the motionEnded:withEvent: method of your app’s window object.

Discussion

The motionEnded:withEvent: method of your app’s window will get called whenever a motion has been captured by iOS. The simplest implementation of this method is this:

- (void) motionEnded:(UIEventSubtype)motion
           withEvent:(UIEvent *)event{

  /* Do something with the motion */

}

The motion parameter, as you can see, is of type UIEventSubtype. One of the values of type UIEventSubtype is UIEventSubtypeMotionShake, which is what we are interested in. As soon as we detect this event, we know that the user has shaken her iOS device. In order to get to our app’s window, though, we need to subclass UIWindow. To do so, follow these steps:

  1. In Xcode, while you have your project opened, go to FileNew File.

  2. From the lefthand side, make sure iOS is the main category and Cocoa Touch is the subcategory.

  3. In the list on the righthand side, select Objective-C class and then press Next, as shown in Figure 16-3.

    Creating a new Objective-C class for our window

    Figure 16-3. Creating a new Objective-C class for our window

  4. Now make sure that you are subclassing UIWindow and then press Next, as shown in Figure 16-4.

  5. In this screen, set the file name to MyWindow and press the Save button, as shown in Figure 16-5.

Figure 16-4. Subclassing UIWindow

Figure 16-5. Saving the class file

Now that ...

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required