У меня есть вид, в котором у меня есть несколько больших кнопок, которые я настроил так:
SwipeButton* btn = [[[SwipeButton alloc] initWithFrame:CGRectMake(55, 0, 300, 50)] autorelease];
btn.tag = k;
[btn setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"titleBackground.png"]]
forState:UIControlStateNormal];
[btn addTarget:self
action:@selector(indexAction:)
forControlEvents:UIControlEventTouchUpInside];
Я хотел бы иметь возможность либо коснуться этих кнопок, а затем запустить метод indexAction, либо - если считывание было распознано - запустить другой метод.
Я думал, что подкласс UIButton должен проходить через пролистывания, но на самом деле это не решение, так как теперь распознаются и пролистывания, и щелчки, поэтому оба метода запускаются.
Есть ли способ обойти это? Как я могу расставить приоритеты смахивания и разрешить touchupinside только если не было смахивания?
Любая помощь будет принята с благодарностью.
Вот как я подклассифицировал UIB-кнопку:
#import "SwipeButton.h"
@implementation SwipeButton
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesBegan:touches withEvent:event];
[self.superview touchesBegan:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesMoved:touches withEvent:event];
[self.superview touchesMoved:touches withEvent:event];
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[super touchesEnded:touches withEvent:event];
[self.superview touchesEnded:touches withEvent:event];
}
@end