通过执行3指滑动手势来呈现模态视图

时间:2014-07-14 15:59:44

标签: objective-c cocoa-touch uitouch

我正在设计一个迷你绘图应用程序,其中我必须通过执行3指滑动手势添加用于启动颜色选择器模态视图的功能。对于处理手势,需要手势识别器,但我使用简单的UIResponder方法,如touchesBegan,touchesMoved和touchesEnded / touchesCancelled方法。     当我在绘图视图上运行3个手指时,需要显示颜色选择器模态视图。所以我所做的就是我已经加载了一个自定义模态视图控制器,用于在用户从主视图中移除他/她的3个手指时将其特定视图作为XIB文件启动。该视图将以模态呈现。模态视图代码位于touchesEnded:方法中。 这是代码: -

  -(void)endTouches:(NSSet *)touches{
//    Remove ending touches from dictionary
NSLog(@"touches- %lu",(unsigned long)touches.count);
for (UITouch *touch in touches) {
        NSValue *key= [NSValue valueWithNonretainedObject:touch];
        NSLog(@"key- %@,touch- %@",key,touch);
        Line *line= [linesInProcess objectForKey:key];
        NSLog(@"line-%@",line);
        //        If this is a double tap, 'line' will be nil, so make sure not to add it to the array
        if (line) {

            [self.rootObj.completeLines addObject:line];
            NSLog(@"lines made- %@",self.rootObj.completeLines);
            [linesInProcess removeObjectForKey:key];
        }

}
if (touches.count==3) {
    NSLog(@"3 finger swipe");

    ColorPickerController *colorPicker= [[ColorPickerController alloc] init];
    [colorPicker setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
    [colorPicker setModalPresentationStyle:UIModalPresentationFormSheet];
    [self.window.rootViewController presentViewController:colorPicker  animated:YES completion:nil];
}
//    Redraw
[self setNeedsDisplay];
 }


 -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
    NSLog(@"%@",NSStringFromSelector(_cmd));
     [self endTouches:touches];
   }
 -(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event{
     NSLog(@"%@",NSStringFromSelector(_cmd));
    [self endTouches:touches];
}

在上面的代码片段中,endTouches只是一个自定义方法,可以根据适当的情况通过touchesEnded或touchesCancelled调用。       我正在设备上测试这个以模拟3指触摸。执行此操作后,删除手指时,touchesEnded:代码运行,控件到达'if(touches.count == 3)'块。这是应该加载颜色选择器模态视图(挂钩到ColorPickerController的XIB文件)的时候。但令我震惊的是,手势后没有任何事情发生。我不明白为什么会发生这种情况。请帮助任何人。

0 个答案:

没有答案