Swift Practice # 140 FocusState 初探
前一篇初步了解SwiftUI在繪製形狀或是線條的幾個初步方法,在SwiftUI產生畫面的方式變得更加的快速與方便(目前個人感想)。
而這篇剛好遇到前陣子在做警告視窗時,嘗試思考說能不能在SwiftUI給予警告時直接跳到需要再編輯修正的TextField,在UIKit可以透過 becomeFirstResponder()或是其他方法來取得 First Responder。而在SwiftUI又要如何實踐,就成為一個課題,好在Apple也有提供方法協助我們完成這個需求。透過 @FocusState 這個 @propertyWrapper來完成。
學習資源:
透過上述資源:嘗試製作出一個訂單送出的頁面,內容會有3個TextField,按下送出後會檢查裡面是否有輸入文字。檢查都有輸入文字會自動收起鍵盤。
PS:先不檢查內容是否正確單純先判斷是否有輸入文字。
先依照官方的教學頁面建立一個enum,來作為@FocusState的指派對象。
接著因為TextField內輸入以及預計檢查後的顏色是一樣的,我嘗試先透過Struct建立一個TextFieldView供其他TextField使用(重複利用,就我目前認知是當作重複的function使用,帶入所需的參數不一樣。)
接著extension UIApplication的功能建立一個收鍵盤的Function
接著建立兩個Function。
一個是檢查輸入的文字是否為空字串,透過switch檢查後回傳Bool。
第二個是檢查三個TextField是否為空字串若是指派@FocusState給已經對應好的TextField。若都有輸入內容則收起鍵盤。
最終是建立上述Gif的畫面(ContentView)並建立關聯。
大致上就完成了Gif所看到的結果,雖然是一個小小的功能,但對目前的我來說也是一個很大的學習。持續努力!!