zoukankan      html  css  js  c++  java
  • UIMenuController在Cell内部无法显示的解决办法。

    Xcode7.2,iOS9.2环境下

    尝试在CollectionViewCell内部,添加LongPress手势,显示UIMenuController。

    @implementation CollectionViewCell //继承自UICollectionViewCell
    
        UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
            longPress.minimumPressDuration = 1;
            [self addGestureRecognizer:longPress];//添加长按手势
    
    //实现长按方法
    - (void)longPress:(UILongPressGestureRecognizer *)gesture
    {
        switch (gesture.state) {
            case UIGestureRecognizerStateBegan:
            {
            //必须实现
                [self becomeFirstResponder];
                
                UIMenuController *menu = [UIMenuController sharedMenuController];
                
                UIMenuItem *item1 = [[UIMenuItem alloc] initWithTitle:@"保存" action:@selector(savePic)];
                
                menu.menuItems = [NSArray arrayWithObject:item1];
    
                [menu setTargetRect:self.scView.frame inView:self.scView.superview];
                
                [menu setMenuVisible:YES animated:YES];
    
            }
                break;
                
            default:
                break;
        }
    }
    
    //必须实现的方法,注意不是 - (BOOL)becomeFirstResponse方法。
    - (BOOL)canBecomeFirstResponse
    {
      return YES;
    }

     实现以上代码,就可以在长按cell时显示出UIMenuController。

    注意注意:!!!!!要实现UIMenuItem的绑定方法,

    很奇怪的地方是,需要在cell内部实现(然而并不会调用),还需要在调用该cell的视图控制器中实现(会调用的方法)。

    这里对于需要传值的情况而言,处理起来就不要麻烦。

    但是还有一个问题就是,当滑动CollectionView时,menu并没有第一时间隐藏。

    所以,可以在你需要menu隐藏的方法内部。实现以下代码。

    UIMenuController *menu = [UIMenuController sharedMenuController];

    [menu setMenuVisible:NO animated:NO];

    综上:就本人目前而言,还是建议不要在cell里面添加弹出UIMenuController的操作。十分麻烦。

  • 相关阅读:
    OK335x mksd.sh hacking
    Qt jsoncpp 对象拷贝、删除、函数调用 demo
    OK335xS 256M 512M nand flash make ubifs hacking
    Qt QScrollArea and layout in code
    JsonCpp Documentation
    Qt 4.8.5 jsoncpp lib
    Oracle数据库生成UUID
    freemarker得到数组的长度
    FreeMarker中if标签内的判断条件
    freemarker语法
  • 原文地址:https://www.cnblogs.com/kkkore/p/5767979.html
Copyright © 2011-2022 走看看