2014-02-10 2 views
0

Я хочу знать, как добавить UIControlEvent в UITableViewCell? Я не могу использовать метод addTarget:action:forControlEvents на UITableViewCell. Я не могу использовать didSelectCellAtIndexPath:, потому что мне нужно знать для UIControlEventTouchDown и UIControlEventTouchUpInside. Как я могу это достичь?Как добавить UIControlEvents на UITableViewCell

Спасибо!

ответ

1

EDIT: Еще один вариант, чтобы выставить UIButton собственность на свою камеру публично, и в cellForRowAtIndexPath: вызов addTarget:action:forControlEvent: на кнопку клетки, передавая себя и метод на вашем контроллере представления, что вы хотите назвать на ощупь. Это исключает необходимость использования протокола делегата. Единственная загвоздка в том, что перед тем, как установить целевое-действие на кнопку ячейки, убедитесь, что позвонить:

[cell.button removeTarget:nil 
       action:NULL 
    forControlEvents:UIControlEventAllEvents]; 

Поскольку клетки (и это кнопка) повторно используется, вам нужно вызвать это, чтобы убедиться, что вы 'не складывать целевые действия на кнопку.

+0

Я искал что-то, может быть, немного менее громоздким? Я мог бы это сделать, хотя ... –

+0

отредактирован с менее громоздким методом –

+0

спасибо! Я использовал ваш первый метод, на самом деле он отлично работал! –

0

Я думаю, что самым чистым решением является определение пользовательского UIGestureRecognizer и добавление его в UITableViewCell.

MDGestureRec.h 

#import <UIKit/UIKit.h> 
#import <UIKit/UIGestureRecognizerSubclass.h> 

@interface MDGestureRec : UIGestureRecognizer 

- (void)reset; 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event; 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event; 

@end 

// ------ 

MDGestureRec.m 

#import "MDGestureRec.h" 

@implementation MDGestureRec 

- (void)reset { } 
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    NSLog(@"touches %@", [touches description]); 
    NSLog(@"touchesBegan %@", [event description]); 
} 
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { } 
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { } 
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { } 

@end 

// ------ 

    MDGestureRec *g = [[MDGestureRec alloc] init]; 

    [cell addGestureRecognizer:g]; 
Смежные вопросы