【问题标题】:How to disable the long press gesture of a QLPreviewController如何禁用 QLPreviewController 的长按手势
【发布时间】:2016-09-08 09:54:44
【问题描述】:

我有一个UIView 作为主视图,并在预览文档时添加一个QLPreviewController 作为子视图。我想限制长按手势,以便没有人可以从文档中复制内容。我试过以下代码:

代码片段:

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:nil]; 

longPress.allowableMovement=100; 

longPress.minimumPressDuration=0.3; 
longPress.delegate=self; 
longPress.delaysTouchesBegan=YES;
longPress.delaysTouchesEnded=YES;

longPress.cancelsTouchesInView=YES; 
[previewController.view addGestureRecognizer:longPress]; 
[self.view addSubview:previewController.view];

但没有成功。谁能告诉我哪里出了问题以及如何禁用长按手势?

我也试过了:

NSArray *arr = previewController.view.gestureRecognizers;

for (int i = 0; i < arr.count; i++) {

     if ([[arr objectAtIndex:i] isKindOfClass:[UILongPressGestureRecognizer class]]) {

         [previewController.view removeGestureRecognizer:[arr objectAtIndex:i]];
     }
}

【问题讨论】:

    标签: ios objective-c qlpreviewcontroller uilongpressgesturerecogni


    【解决方案1】:

    你可以这样做,

    NSArray *arr = qlPreviewController.gestureRecognizers;
    
    for (int i = 0; i < arr.count; i++) {
    
        if ([[arr objectAtIndex:i] isKindOfClass:[UILongPressGestureRecognizer class]]) {
    
            [qlPreviewController removeGestureRecognizer:[arr objectAtIndex:i]];
        }
    }
    

    qlPreviewControllerQLPreviewControllerUILongPressGestureRecognizer 的看法的对象!

    qlPreviewControllerview 而不是 viewcontroller 请确保!

    更新:

    例如;

      QLPreviewController *vc;  
    
      UIView *qlPreviewController = vc.view;
    

    更新 2:

    您可以使用此delegate method 禁用手势识别器!

      - (BOOL) gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch
    {
    
        return NO;
    
    
     }
    

    【讨论】:

    • 让我试试.. 并且确定它不是视图控制器
    • 你能告诉我你所说的 qlPreviewController 是 QLPreviewController 视图的对象是什么意思吗?
    • 这意味着QLPreviewController的主视图,因为我们在view而不是视图控制器上添加了手势识别器!明白了吗?
    • 我收到一个错误“'QLPreviewController' 的无可见 @interface 声明了 'removeGestureRecognizer' 的选择器”
    • 您需要从previewController.view 中移除手势识别器。你犯了错误,因为你犯了我害怕的同样的错误。您正在尝试从 viewcontroller 而不是 view 获取识别器数组!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-17
    • 1970-01-01
    • 2011-10-18
    • 2013-09-21
    • 1970-01-01
    相关资源
    最近更新 更多