我正在构建一个增强现实应用,当它扫描单张图片时,我希望它能自动播放视频。
目前,我必须点击图片上的按钮,使用单击手势方法播放视频。
- (void)handleTap:(UITapGestureRecognizer *)sender {
if (sender.state == UIGestureRecognizerStateEnded) {
// handling code
CGPoint touchPoint = [sender locationInView:eaglView];
[eaglView handleTouchPoint:touchPoint];
}
}
现在我想使用NSNotification
进行模拟,当扫描完成并且视频准备播放时
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(test) name:@"singleTap" object:nil];
-(void)test
{
[self handleTap:nil];
}
但它会崩溃,因为我发送它为零,如何将sender.state
发送到handleTap
方法,因为它期望sender.state=UIGestureRecognizerStateEnded
。
感谢。
答案 0 :(得分:2)
您无需测试UITapGestureRecognizer的状态,它是一个离散的手势,当调用handleTap
方法时,它只有一个状态(UIGestureRecognizerStateRecognized = UIGestureRecognizerStateEnded)。
所以你可以这样做:
- (void)handleTap:(UITapGestureRecognizer *)sender {
// handling code
CGPoint touchPoint = [sender locationInView:eaglView];
[eaglView handleTouchPoint:touchPoint];
}
并模拟它:
-(void)test
{
[self handleTap:nil];
}
答案 1 :(得分:0)
在.h文件中:
UITapGestureRecognizer *tapRecog;
并进入.m文件: 在 viewDidLoad :
tapRecog = [UITapGestureRecognizer alloc] init];
[YourImage addObserver:self forKeyPath:@"singleTap" options:0 context:nil];
[YourImage addSubview:tapRecog];
然后:
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if ([keyPath isEqualToString:@"singleTap"])
{
[self test];
}
}
然后修改测试功能:
-(void)test
{
[self handleTap:tapRecog];
}