zoukankan      html  css  js  c++  java
  • iOS 学习

    菜单事件包括,剪切、拷贝、全选、分享...,此 demo 只有 copy、share

    1.定义 field 继承与 UITextField

    - (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
        if (action == @selector(copy:)) {
            return YES;
        }
        return NO;
    }
    
    - (void)copy:(id)sender {
        [self resignFirstResponder];
        //持久化,退出程序 copy 的内容还在
        [[UIPasteboard generalPasteboard]setPersistent:YES];
        //拷贝的内容
        [[UIPasteboard generalPasteboard]setValue:self.text forPasteboardType:[UIPasteboardTypeListString objectAtIndex:0]];
    }

    2.ViewController 加载

    field = [[CCField alloc]initWithFrame:CGRectMake(100, 200, 100, 40)];
        field.backgroundColor = [UIColor greenColor];
        [self.view addSubview:field];
        
        UIMenuItem *shareItem = [[UIMenuItem alloc]initWithTitle:@"分享" action:@selector(click)];
        UIMenuController *menu = [UIMenuController sharedMenuController];
        [menu setMenuItems:[NSArray arrayWithObjects:shareItem, nil]];

    3.分享的实现,以微信为例,准备工作在这里

        SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc]init];
        // 使用文本信息
        sendReq.bText = YES;
        // 发到还有列表 , 默认是 0
        sendReq.scene = 0;
        
        sendReq.text = field.text;
        //发送分享信息
        [WXApi sendReq:sendReq];
        NSLog(@"213");

    二 自定义,使用 UIMenuController

    1.使 view 变成第一响应者

    2.初始化 UIMenuItem 加入 UIMenuController 中

    3.实现 canPerformAction: withSender: 方法

    还是以复制为例

    - (BOOL)canBecomeFirstResponder {
        return YES;
    }
    
    - (void)click:(UITapGestureRecognizer *)tap {
        //要显示 menu 必须将触碰的 View 设为第一响应对象
        [self.view becomeFirstResponder];
        UIMenuController *menuController = [UIMenuController sharedMenuController];
        UIMenuItem *copyItem = [[UIMenuItem alloc]initWithTitle:@"复制" action:@selector(click)];
        menuController.menuItems = @[copyItem];
        //设置 menu 的 frame和父 view
        [menuController setTargetRect:CGRectMake(_label.frame.origin.x, _label.frame.origin.y, 100, 50) inView:self.view];
        [menuController setMenuVisible:YES animated:YES];
    }

    完成demo 在 githud,点我查看

  • 相关阅读:
    JobRunShell.cs not FOUND
    Manjaro Linux 更新后无法启动问题
    VMware Workstation 16 启动虚拟机失败(vmmon 版本问题)
    sql生成表模型字段
    【短道速滑六】古老的视频去噪算法(FLT_GradualNoise)解析并优化,可实现1920*1080 YUV数据400fps的处理能力。
    Mvc Redis 相关资料
    Android Handler内存泄露
    ANDROID中HANDLER使用浅析
    Android并发编程之白话文详解Future,FutureTask和Callable
    企业微信考勤接口返回的秒数与统计天数关系
  • 原文地址:https://www.cnblogs.com/asamu/p/5785356.html
Copyright © 2011-2022 走看看