Membongkar UIControl di UIKit
Dimulai dengan rasa penasaran mengenai bagaimana control component dibuat dan bagaimana implementasi nya ketika kita ingin mengCustom sendiri action control sesuai kebutuhan kita.
Oke, kita mulai dengan membongkar properties dan method yang ada dalam definition class UIControl.
open func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool
beginTracking method digunakan ketika kita ingin mendeteksi touch gesture ketika user menyentuh action control yang kita buat. Untuk mengaktifkan tracking kita harus set return menjadi true begitu pun sebaliknya.
open func continueTracking(_ touch: UITouch, with event: UIEvent?) -> Bool
continueTracking merupakan method untuk tracking ketika proses user interaction berjalan. Pada method ini kita bisa mendeteksi touch location untuk mengubah view ketika terjadi perubahan lokasi user interaksi.
open func endTracking(_ touch: UITouch?, with event: UIEvent?)
endTracking sesuai dengan artinya endTracking digunakan untuk mendeteksi ketika interaksi user berhenti, ada juga cancelTracking yang berfungsi untuk mendeteksi ketika user interaksi tidak sengaja terlepas.
open func cancelTracking(with event: UIEvent?)
Untuk developer pemula mungkin method diatas jarang diketahui, tetapi ternyata UIControl sepowerfull itu untuk membuat custom interaction component. Ada beberapa properties lagi yang ada di UIControl mungkin kalian bisa explore sendiri mengenai fungsi setiap method atau properties yang ada. Oke sekian sharing kali ini semoga bisa membantu teman- teman untuk mengimprove kemampuan dalam mendevelop Aplikasi.
NB: Sebisa mungkin jangan di gabungkan dengan super view yang juga memiliki gesture, karena akan mengganggu proses sliding atau interaksi.
Update (12 Agustus 2020): Untuk mengatasi conflict saat pan gesture kita bisa menggunakan fungsi ini untuk handler nya
override func gestureRecognizerShouldBegin(_ gestureRecognizer: UIGestureRecognizer) -> Bool {
if gestureRecognizer.isKind(of: UIPanGestureRecognizer.self) {
return false
} else {
return super.gestureRecognizerShouldBegin(gestureRecognizer)
}
}
Article Sources:
Source Code :