Вопрос

I am new to iPhone.

I want to add both a long press gesture and a click event to my Button, is this possible?

When I add both events to the button and then long press, my click event gets fired (on click I navigate to a new page), but my long press event never gets fired.

Here is my code snippet:

button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(xpos, ypos, 120,130);
[button setBackgroundImage:[UIImage imageNamed:@"ibook2.png"] forState:UIControlStateNormal];
[button setTitle:[NSString stringWithFormat:@"32"]];
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchDown];

LongPress = [[UILongPressGestureRecognizer alloc] init];
[LongPress addTarget:self action:@selector(longPressDetected:)];
LongPress.delegate = (id<UIGestureRecognizerDelegate>)self;
[button addGestureRecognizer:LongPress];
[LongPress release];

[self.view addSubview:button];

How do I add both events?

Any help will be appreciated.

Это было полезно?

Решение

Change the line as follows,

     [button addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];

You click event will be fired as soon you touch the button if you use touchdown event. TouchupInside fires the action on touchup.

To get title ,

 - (void)longPressDetected:(UIGestureRecognizer *)gestureRecognizer
{
    UIButton *button = (UIButton *)[gestureRecognizer view];
    NSLog(@"%@",[button titleForState:UIControlStateNormal]);
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top