自定義view添加復(fù)制粘貼功能

在有很多信息需要復(fù)制咐刨,但是布局又是采用的自定義view的時(shí)候雕拼,可以給自定義的view添加復(fù)制功能伪阶,自定義需要復(fù)制的內(nèi)容

一煞檩、iOS已經(jīng)有一些控件自帶了復(fù)制功能
1、UITextView
2栅贴、UITextField
3斟湃、UIWebView
4、WKWebView

一些簡(jiǎn)單的文本如果需要復(fù)制檐薯,可以直接使用UITextView替代UILabel凝赛,但是如果想U(xiǎn)ILabe或者自定義的view也有復(fù)制的功能,可以繼續(xù)往下看

二坛缕、需要知道的內(nèi)容
1墓猎、UIPasteboard -- 用來放入需要復(fù)制的內(nèi)容,可以放文本和圖片赚楚,url等
2毙沾、UIMenuController -- 用來創(chuàng)建顯示的菜單選項(xiàng)

自定義的菜單選項(xiàng)

3、自定義view實(shí)現(xiàn)canPerformAction:withSender:方法宠页,他返回一個(gè)bool值左胞,用來判斷哪些方法對(duì)應(yīng)的菜單可以顯示出來

    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(self.customAction) {
            return true
        }
        if action == #selector(self.moreMenuAction) {
            return true
        }
        
        return false
    }

實(shí)現(xiàn)canBecomeFirstResponder屬性,代表改自定義view可以成為第一響應(yīng)者举户,這樣才能獲得相應(yīng)事件

override var canBecomeFirstResponder: Bool {
        return true
    }

自定義改view的時(shí)候烤宙,還需要設(shè)置屬性isUserInteractionEnabled為true
self.isUserInteractionEnabled = true

三、注意上面的內(nèi)容俭嘁,就可以給自定義的view加上復(fù)制粘貼以及更多的高級(jí)功能了

class MyCopyView: USBaseView {
    let label1 = UILabel()
    let textField = UITextField()
    
    override func setup() {
        super.setup()
        
        self.isUserInteractionEnabled = true
        
        self.label1.us.customize { (view) in
            self.addSubview(view)
            
            view.isUserInteractionEnabled = true
            view.text = "復(fù)制的數(shù)據(jù)"
            view.textColor = UIColor.red
        }
        
        self.textField.us.customize { (view) in
            self.addSubview(view)
            
            view.backgroundColor = UIColor.red
            view.text = "填寫數(shù)據(jù)"
            view.textColor = UIColor.green
        }
        
        
        self.label1.snp.makeConstraints { (make) in
            make.top.leading.bottom.equalToSuperview()
            make.width.equalTo(Utils.screenWidth / 2)
        }
        
        self.textField.snp.makeConstraints { (make) in
            make.leading.equalTo(self.label1.snp.trailing)
            make.top.trailing.equalToSuperview()
            make.height.equalTo(30)
        }
        
        let gesture = UILongPressGestureRecognizer(target: self, action: #selector(self.handleLongGesture(recognizer:)))
        self.addGestureRecognizer(gesture)
        
        
    }
    
    override var canBecomeFirstResponder: Bool {
        return true
    }
    
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        if action == #selector(self.customAction) {
            return true
        }
        if action == #selector(self.moreMenuAction) {
            return true
        }
        
        return false
    }
    
    func handleLongGesture(recognizer: UIGestureRecognizer) {
        if let recognizerView = recognizer.view,
            let recognizerSuperView = recognizerView.superview
        {
            if !UIMenuController.shared.isMenuVisible {
                let menuController = UIMenuController.shared
                let item1 = UIMenuItem(title: "自定義功能1", action: #selector(self.customAction))
                let item2 = UIMenuItem(title: "...", action: #selector(self.moreMenuAction))
                menuController.menuItems = [item1, item2]
                menuController.setTargetRect(recognizerView.frame, in: recognizerSuperView)
                menuController.setMenuVisible(true, animated:true)
                recognizerView.becomeFirstResponder()
            }
        }
    }
    
    func customAction() {
        print("自定義功能1躺枕,這個(gè)就叫做復(fù)制吧")
        
        UIPasteboard.general.string = self.label1.text
//        UIPasteboard.general.image = UIImage(named: "icon_touch") // 復(fù)制圖片
    }
    
    func moreMenuAction() {
        // 更多功能可以展示彈出框
    }
 
}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子拐云,更是在濱河造成了極大的恐慌蔓姚,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評(píng)論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慨丐,死亡現(xiàn)場(chǎng)離奇詭異坡脐,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)房揭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評(píng)論 3 400
  • 文/潘曉璐 我一進(jìn)店門备闲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人捅暴,你說我怎么就攤上這事恬砂。” “怎么了蓬痒?”我有些...
    開封第一講書人閱讀 169,941評(píng)論 0 366
  • 文/不壞的土叔 我叫張陵泻骤,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我梧奢,道長(zhǎng)狱掂,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評(píng)論 1 300
  • 正文 為了忘掉前任亲轨,我火速辦了婚禮趋惨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘惦蚊。我一直安慰自己器虾,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,295評(píng)論 6 398
  • 文/花漫 我一把揭開白布蹦锋。 她就那樣靜靜地躺著兆沙,像睡著了一般。 火紅的嫁衣襯著肌膚如雪莉掂。 梳的紋絲不亂的頭發(fā)上葛圃,一...
    開封第一講書人閱讀 52,874評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音巫湘,去河邊找鬼装悲。 笑死掌测,一個(gè)胖子當(dāng)著我的面吹牛和敬,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播况既,決...
    沈念sama閱讀 41,285評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼阅嘶,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼属瓣!你這毒婦竟也來了载迄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤抡蛙,失蹤者是張志新(化名)和其女友劉穎护昧,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體粗截,經(jīng)...
    沈念sama閱讀 46,760評(píng)論 1 321
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡惋耙,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,840評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了熊昌。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绽榛。...
    茶點(diǎn)故事閱讀 40,973評(píng)論 1 354
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖婿屹,靈堂內(nèi)的尸體忽然破棺而出灭美,到底是詐尸還是另有隱情,我是刑警寧澤昂利,帶...
    沈念sama閱讀 36,631評(píng)論 5 351
  • 正文 年R本政府宣布届腐,位于F島的核電站,受9級(jí)特大地震影響蜂奸,放射性物質(zhì)發(fā)生泄漏犁苏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,315評(píng)論 3 336
  • 文/蒙蒙 一窝撵、第九天 我趴在偏房一處隱蔽的房頂上張望傀顾。 院中可真熱鬧襟铭,春花似錦碌奉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至哩都,卻和暖如春魁兼,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背漠嵌。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評(píng)論 1 275
  • 我被黑心中介騙來泰國(guó)打工咐汞, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人儒鹿。 一個(gè)月前我還...
    沈念sama閱讀 49,431評(píng)論 3 379
  • 正文 我出身青樓化撕,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親约炎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子植阴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,982評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,348評(píng)論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫(kù)蟹瘾、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,131評(píng)論 4 61
  • 秋意濃稠, 小雨微涼喷鸽, 正值好時(shí)光众雷! 小樓聽夜雨, 又聞秋蟲啁啾做祝! 稻谷味兒香报腔!
    鑫享人生的窩閱讀 334評(píng)論 0 1
  • 簡(jiǎn)書注冊(cè)第一天,留下一個(gè)腳悠实怼纯蛾! 第一次的寫作,有點(diǎn)小小的新奇和興奮纵隔,對(duì)我來說翻诉,寫作是離我太過遙遠(yuǎn)的東西。因?yàn)槲覐奈?..
    一個(gè)有思想的傻子閱讀 242評(píng)論 0 1
  • 再捱一會(huì)兒捌刮,天就亮了清晨的海棠花碰煌,美麗得不需要語(yǔ)言所以你有海棠的沉默而我,為你而沉默即將擁有石頭的一生 清晨也是美...
    余上仙閱讀 311評(píng)論 25 17