10.4. Detecting Long-Press Gestures
Problem
You want to be able to detect when the user taps and holds his finger on a view for a certain period of time.
Solution
Create an instance of the UILongPressGestureRecognizer
class and add it to the view that has to detect
long-tap gestures:
#import "ViewController.h"
@interface
ViewController
()
@property
(
nonatomic
,
strong
)
UILongPressGestureRecognizer
*
longPressGestureRecognizer
;
@property
(
nonatomic
,
strong
)
UIButton
*
dummyButton
;
@end
@implementation
ViewController
Here is the viewDidLoad
instance method of the view
controller that uses the long-press gesture recognizer that we defined in the .m file:
-
(
void
)
viewDidLoad
{
[
super
viewDidLoad
];
self
.
dummyButton
=
[
UIButton
buttonWithType
:
UIButtonTypeRoundedRect
];
self
.
dummyButton
.
frame
=
CGRectMake
(
0.0f
,
0.0f
,
72.0f
,
37.0f
);
[
self
.
dummyButton
setTitle
:
@"My button"
forState
:
UIControlStateNormal
];
self
.
dummyButton
.
center
=
self
.
view
.
center
;
[
self
.
view
addSubview
:
self
.
dummyButton
];
/* First create the gesture recognizer */
self
.
longPressGestureRecognizer
=
[[
UILongPressGestureRecognizer
alloc
]
initWithTarget:
self
action:
@selector
(
handleLongPressGestures
:
)];
/* The number of fingers that must be present on the screen */
self
.
longPressGestureRecognizer
.
numberOfTouchesRequired
=
2
;
/* Maximum 100 points of movement allowed before the gesture
is recognized */
self
.
longPressGestureRecognizer
.
allowableMovement
=
100.0f
;
/* The user must press 2 fingers (numberOfTouchesRequired) for
at least 1 second ...
Get iOS 7 Programming Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.