UIGestureRecognizer崩溃< OS3.2

这是可以预料的,但我似乎无法找到一个正常运行的运行时,因为它似乎是一个私有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];


    }
    
已邀请:
您应该明确检查系统版本:
NSString *currentSystemVersion = [[UIDevice currentDevice] systemVersion];
if([currentSystemVersion compare:@"3.2"] == NSOrderedAscending) {
    //add gesture recognizer
} else {
    // :(
}
    
iOS 3.2之前不支持UIGestureRecognizer。即使存在方法
addGestureRecognizer:
,也不意味着使用它是安全的。     
它确实是一个私有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开始公开的,它是在   在此之前的短时间内发展。虽然这个类存在于   早期版本,使用它和其他手势识别器类   早期版本不支持。你不应该试图使用   这些类的实例。 点击此处查看全文。     

要回复问题请先登录注册