UIMenuController

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];
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容