設定元件點擊程式的 SwiftUI onTapGesture

開發 App 時,我們時常希望點選某個元件時做某些事。在 SwiftUI 這樣的功能十分容易做到,不管是文字還是圖片都能點選,只要從 UI 元件呼叫 function onTapGesture 設定被點擊時執行的程式即可。

function onTapGesture 來自 protocol View,它的宣告如下,接下來就讓我們看看這個它的應用實例吧。

func onTapGesture(count: Int = 1, perform action: @escaping () -> Void) -> some View

點選文字

Text("我是可以按的文字唷")   .onTapGesture {      print("文字被按了")   }

ps: 切換到 Debug Preview 才能看到點選文字列印的訊息,相關資訊可參考以下連結:

點選圖片

Image("pic")   .onTapGesture {      print("圖片被按了")   }

點選圓形

Circle()   .onTapGesture {      print("圓形被按了")   }

點選透明區塊的 contentShape

onTapGesture 正常情況下只能點選看得到的部分,以下例子我們將 Text 設為 200 * 200,由於它的背景是透明的,因此只有文字和邊框可點選。

Text("點我")   .frame(width: 200, height: 200)   .border(Color.black, width: 5)   .onTapGesture {      print("tap")   }

若想讓透明背景也可點選,則須加上 contentShape 控制可點選的區塊,呼叫 contentShape(Rectangle()) 讓整個 Text 變成可點選。

Text("點我")   .frame(width: 200, height: 200)   .border(Color.black, width: 5)   .contentShape(Rectangle())   .onTapGesture {      print("tap")   }

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com