移动端开发程序员iOS技术专题

UIMenuController

2016-06-13  本文已影响382人  码路芽子
Snip20160613_2.png

UIMenuController 须知

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

/**
 * 让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;
}

- (void)labelClick
{
    /** Label 要成为第一响应者 (告诉我们menu支持什么操作, 如何处理)*/
    [self becomeFirstResponder];
    
    /** 显示MenuController */
    UIMenuController *menu = [UIMenuController sharedMenuController];
    /** targetRect: 指向的矩形框 */
    [menu setTargetRect:self.frame inView:self.superview];
    [menu setMenuVisible:YES animated:YES];
}

上一篇下一篇

猜你喜欢

热点阅读