【发布时间】:2012-08-30 17:01:23
【问题描述】:
正如this SO-answer 中所述,我正在尝试在UIIMageView 的子类中实现UITapGestureRecognizer。我的方法可以在下面找到。
MenuButtonImageView 的实例是homeScreenViewController.view 的子视图。
我也实现了touchesBegan:withEvent:、touchesMoved:withEvent: 和touchesEnded:withEvent:,并且工作正常。
问题:不知何故,handleSingleFingeredTap: 永远不会被调用。这可能是什么问题?
@interface MenuButtonImageView : UIImageView
@property (nonatomic, weak) IBOutlet HomescreenViewController *homeScreenViewController;
@property (nonatomic, readwrite) Visibility visibility;
- (void)handleSingleFingeredTap:(UITapGestureRecognizer *)recognizer;
@end
@implementation MenuButtonImageView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.visibility = HIDDEN;
self.userInteractionEnabled = YES;
UITapGestureRecognizer * singleFingeredTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleSingleFingeredTap:)];
singleFingeredTap.numberOfTapsRequired = 1;
[self addGestureRecognizer:singleFingeredTap];
}
return self;
}
- (void)handleSingleFingeredTap:(UITapGestureRecognizer *)recognizer {
NSLog(@"handleTap was called"); // This method is not called!
[self toggleMainMenu];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { ... }
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { ... }
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { ... }
@end
【问题讨论】:
-
可能因为您将可见性设置为隐藏而无法正常工作?设置
numberOfTouchesRequired = 1.
标签: objective-c ios5 uiimageview uigesturerecognizer