18.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)motionwithEvent:(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:
In Xcode, while you have your project opened, go to File → New File.
From the lefthand side, make sure iOS is the main category and Cocoa Touch is the subcategory.
In the list on the righthand side, select Objective-C class and then press Next, as shown in Figure 18-3.

Figure 18-3. Creating a new Objective-C class for our window
Now make sure that you are subclassing
UIWindowand then press Next, as shown in Figure 18-4.
Figure 18-4. Subclassing UIWindow
In this screen, set the file name to ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access