iOS SwiftUI 讓Text被選擇并復(fù)制內(nèi)容(含源碼)

Jietu20200422-113220@2x.jpg

在UIkit時(shí)代,我們可以通過UITextView的方式構(gòu)建可選擇和復(fù)制內(nèi)容的文本。進(jìn)入SwiftUI時(shí)代我們該如何解決這個(gè)問題呢

沒有什么,我們就自己動(dòng)手造

UIViewRepresentable
SwiftUI 給我們提供視圖包裝器(UIViewRepresentable),可以將UIKit控件包裝成SwiftUI世界的原生控件。下面是UIViewRepresentable的介紹

A wrapper for a UIKit view that you use to integrate that view into your SwiftUI view hierarchy.

大白話:
UIKit視圖的包裝器,用于將其集成到SwiftUI視圖層次結(jié)構(gòu)中。

UIViewRepresentable 簡介

我們可以使用UIViewRepresentable在SwiftUI世界中創(chuàng)建和管理UIView對象。在您的項(xiàng)目中可以定義一個(gè)struct來實(shí)現(xiàn)這個(gè)協(xié)議,并使用其方法來創(chuàng)建,更新和拆除視圖。創(chuàng)建和更新過程與SwiftUI視圖的行為類似,您可以使用它們使用程序的當(dāng)前狀態(tài)信息來配置視圖。使用拆解過程從SwiftUI干凈地刪除視圖。例如,您可以使用拆卸過程來通知其他對象該視圖消失。
要將視圖添加到SwiftUI世界,請創(chuàng)建一個(gè)struct實(shí)現(xiàn)UIViewRepresentable協(xié)議。系統(tǒng)在適當(dāng)?shù)臅r(shí)間調(diào)用可表示實(shí)例的方法以創(chuàng)建和更新視圖。以下示例顯示了視圖層次結(jié)構(gòu)中包含自定義MyRepresentedCustomView結(jié)構(gòu)的信息。

struct ContentView: View {
   var body: some View {
      VStack {
         Text("Global Sales")
         MyRepresentedCustomView()
      }
   }
}

系統(tǒng)不會(huì)自動(dòng)將視圖內(nèi)發(fā)生的更改傳達(dá)給SwiftUI界面的其他部分。當(dāng)您希望您的視圖與其他SwiftUI視圖進(jìn)行協(xié)調(diào)時(shí),必須提供一個(gè)Coordinator實(shí)例來促進(jìn)這些交互。例如,您使用target-action來轉(zhuǎn)發(fā)目標(biāo)操作并將消息從您的視圖委托給任何SwiftUI視圖

好了,下面我們來看看如何實(shí)現(xiàn)一個(gè)支持選擇和復(fù)制文本的Text吧!

感謝網(wǎng)友守約七號(hào)提的需求

網(wǎng)友反饋需要不彈出鍵盤,后來研究了一下,實(shí)現(xiàn)起來非常簡單。只需要

 uiView.inputView = UIView()

完整代碼

還有 78% 的精彩內(nèi)容
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
支付 ¥1.89 繼續(xù)閱讀

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容