UIMenuController

作者: 码路芽子 | 来源:发表于2016-06-13 09:41 被阅读382次
    Snip20160613_2.png

    UIMenuController 须知

    • 默认情况下,有以下控件已经支持UIMenuController
    • UITextField
    • UITextView
    • UIWebView

    让其他控件也支持UIMenuController(比如UILabel)

    • 自定义UILabel
    • 重写2个方法
    /**
     * 让label可以成为第一响应者
     */
    - (BOOL)canBecomeFirstResponder
    {
        return YES;
    }
    
    /**
     * label能只想哪个操作
     */
    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender
    {
        NSLog(@"%@", NSStringFromSelector(action));
        
        if (action == @selector(cut:) || action == @selector(copy:) || action == @selector(paste:)) {
            return YES;
        }
        
        return NO;
    }
    
    
    • 实现操作方法
    - (void)copy:(UIMenuController *)menu
    {
        /** 将自己的文字赋值到粘贴板 */
        if (self.text.length > 0) {
            UIPasteboard *board = [UIPasteboard generalPasteboard];
            board.string = self.text;
        }
    }
    
    - (void)cut:(UIMenuController *)menu
    {
        /** 将自己的文字赋值到粘贴板 */
        [self copy:menu];
        
        /** 清空文字 */
        self.text = nil;
        
    }
    
    - (void)paste:(UIMenuController *)menu
    {
        /** 将粘贴板文字赋值到自己身上 */
        UIPasteboard *board = [UIPasteboard generalPasteboard];
        self.text = board.string;
    }
    
    
    • 显示MenuController
    - (void)labelClick
    {
        /** Label 要成为第一响应者 (告诉我们menu支持什么操作, 如何处理)*/
        [self becomeFirstResponder];
        
        /** 显示MenuController */
        UIMenuController *menu = [UIMenuController sharedMenuController];
        /** targetRect: 指向的矩形框 */
        [menu setTargetRect:self.frame inView:self.superview];
        [menu setMenuVisible:YES animated:YES];
    }
    
    

    相关文章

      网友评论

        本文标题:UIMenuController

        本文链接:https://www.haomeiwen.com/subject/gllydttx.html