Imr*_*med 2 selector uigesturerecognizer ios
我在寻找一种方式来强行改变的状态UILongPressGestureRecognizer来UIGestureRecognizerStateEnded创建自己的"最大持续时间"拓UILongPressGestureRecognizer(基本上是创造一种触摸和保持时间最长的功能).
以下是我对此的尝试:
- (void)handleLongPressGestures:(UILongPressGestureRecognizer *)sender
{
if (sender.state == UIGestureRecognizerStateBegan)
{
NSLog(@"Hold Gesture Started");
timer = [NSTimer scheduledTimerWithTimeInterval:10.0 target:self selector:@selector(timesup:) userInfo:nil repeats:NO];
//perform a function - i.e. start something
}
else if(sender.state == UIGestureRecognizerStateEnded)
{
NSLog(@"Hold Gesture Complete");
[timer invalidate];
timer = nil;
//perform a function - i.e. stop something
}
}
-(void)timesup:(NSTimer *)timer {
NSLog(@"Timer Up!");
[longpress setState:UIGestureRecognizerStateEnded];
}
Run Code Online (Sandbox Code Playgroud)
问题是[longpress setState:UIGestureRecognizerStateEnded];虽然在xcode中推荐,但仍然会抛出此错误:
No visible @interface for 'UILongPressGestureRecognizer' declares the selector 'setState:'
关于如何解决这个/绕过这个问题的任何想法?我尝试在SO上寻找解决方案,但我没有找到任何东西.话虽如此,如果这个问题与已经回答的问题重复,我会道歉 - 我只是没有看到它(我保证!)
您收到此错误是因为默认情况下,当您将UIKit导入实现文件时,它会导入UIGestureRecognizer.h,它会公开声明其状态属性为readonly.如果您希望能够设置此属性,则必须导入UIGestureRecognizerSubclass.h,它将此属性重新声明为readwrite.请注意,这是为了在UIGestureRecognizer的子类中使用,我不知道如何在引擎盖下使用这个用法是安全的.
#import <UIKit/UIGestureRecognizerSubclass.h>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
665 次 |
| 最近记录: |