这是可以预料到的,但我似乎无法找到一个正常运行的运行时,因为它似乎是以前的私有API !!!!
目前我和OS3.1.3响应addGestureRecognizer选择器!!!!
if ( [self.view respondsToSelector:@selector(addGestureRecognizer:)] ) {
UIGestureRecognizer *recognizer;
recognizer = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(morePress)];
[self.view addGestureRecognizer:recognizer];
recognizer.delegate = self;
[recognizer release];
}
答案 0 :(得分:3)
iOS 3.2之前不支持UIGestureRecognizer。即使方法addGestureRecognizer:
存在,也不意味着使用它是安全的。
答案 1 :(得分:3)
您应该明确检查系统版本:
NSString *currentSystemVersion = [[UIDevice currentDevice] systemVersion];
if([currentSystemVersion compare:@"3.2"] == NSOrderedAscending) {
//add gesture recognizer
} else {
// :(
}
答案 2 :(得分:0)
它确实是私有api,在3.2之前的版本中不受支持。
Apple的医生说:
在运行时确定是否可以使用手势识别器 你的应用程序,测试该类是否存在,如果存在, 分配一个实例并查看它是否响应选择器 locationInView :.在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
Explenation:
确定某个类在给定iOS中是否在运行时可用 发布时,您通常会检查该类是否为零。不幸, 对于UIGestureRecognizer,此测试不是非常准确。虽然 这个类是从iOS 3.2开始公开的,它是在 在此之前的短时间内发展。虽然这个类存在于 早期版本,使用它和其他手势识别器类 早期版本不支持。你不应该试图使用 这些类的实例。
查看全文here。