iOS 3.1.3中的UIGestureRecognitor?
我正在努力使现有的iPhone/iPad项目向后兼容到iPhoneOS3.0 我目前的测试设备是一个3.1.3版本的iPodtouch 以下代码位导致了问题:iOS 3.1.3中的UIGestureRecognitor?,ios,iphone-sdk-3.0,uigesturerecognizer,universal-binary,Ios,Iphone Sdk 3.0,Uigesturerecognizer,Universal Binary,我正在努力使现有的iPhone/iPad项目向后兼容到iPhoneOS3.0 我目前的测试设备是一个3.1.3版本的iPodtouch 以下代码位导致了问题: Class gestureRecognizer = NSClassFromString(@"UISwipeGestureRecognizer"); if (gestureRecognizer != nil) { UISwipeGestureRecognizer * leftSwipeRecognizer = [[UISwipe
Class gestureRecognizer = NSClassFromString(@"UISwipeGestureRecognizer");
if (gestureRecognizer != nil)
{
UISwipeGestureRecognizer * leftSwipeRecognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self
action:@selector(didSwipeLeft:)];
leftSwipeRecognizer.direction = UISwipeGestureRecognizerDirectionLeft;
leftSwipeRecognizer.delegate = self;
[self.view addGestureRecognizer:leftSwipeRecognizer];
_leftSwipeRecognizer = leftSwipeRecognizer;
}
根据苹果的文档,UIgestureRecognitor是从iOS 3.2开始定义的。因此,我希望在以前的操作系统版本中,Class-gestureReconizer
为nil
,并跳过以下内容。但是它不会跳过GestureRecognitor
不是nil
,如果中的代码开始执行,并在左侧SwipRecogniter.direction
处崩溃,原因是:
-[UISwipeGestureRecognizer setDirection:]: unrecognized selector sent to instance 0x1e5720
这种情况很令人困惑。我想我做的一切都是按部就班的。我尝试在使用某个类之前检查它是否存在,但是该类不应该存在,存在,愚弄了我的测试,不符合预期的规范,并且崩溃
当然,我可以在这里和那里放置一些respondsToSelector
检查来解决这个崩溃,但这不是一个优雅的方法
还有其他建议吗?根据UIgestureRecognitor类参考,在下,您确实需要在检查类是否存在后对选择器进行额外的响应检查
这直接来自文档:
确定类是否为
在给定的iOS中运行时可用
发布时,您通常会检查
这门课零分。不幸的是
该测试对测试结果不完全准确
手势识别器。虽然这
该类在开始时是公开的
iOS 3.2正处于开发阶段
在此之前很短的一段时间。虽然
该类存在于早期版本中
发布、使用it和其他
不支持手势识别器类
在早期版本中受支持。你
不应尝试使用的实例
那些课
在运行时确定
可以在您的应用程序中使用手势识别器
应用程序,测试类是否
存在,如果存在,则分配一个
实例,查看是否有响应
到选择器位置查看:。这
方法未添加到类中
直到iOS 3.2。代码可能看起来像
例如:
UIGestureRecognizer *gestureRecognizer = [[UIGestureRecognizer alloc]
initWithTarget:self action:@selector(myAction:)];
if (![gestureRecognizer respondsToSelector:@selector(locationInView:)]) {
[gestureRecognizer release];
gestureRecognizer = nil;
}
// do something else if gestureRecognizer is nil