Fajar menjelang pagi 🌔
Udara yang begitu segar menyapaku dari cendela yang sengaja aku buka semalaman, suara kicauan burung melengkapi indahnya sang cangrawala hasil lukisan tuhan 😙. Syukuri dan nikmati setiap detik yang begitu berharga yang telah tuhan berikan kepada kita. Selalu mencoba memaafkan diri sendiri atas segala hilaf yang dilakukan di hari kemarin dan jangan lupa memaafkan siapa saja atas apa saja pada hari kemarin, agar segala apa yang tercatat dalam buku kehidupan kita menjadi baik tanpa goresan merah didalamnya 😊. Jangan lupa belajar efisien terhadap apa yang dilakukan dan apa yang difikirkan mungkin itulah sebagian kecil dari bagaiman kita menghargai kehidupan 😊.
Ngomong - ngomong tentang efisien, jadi teringat akan dua inputan dalam swift 4 yaitu UITextField dan UITextView. Bukankah itu sama saja, keduanya digunakan sebagai media inputan dalam membangun aplikasi IOS. Tidak sesimple itu sobat 😅, ternyata keduanya memiliki fungsi dan keunggulan masing - masing walaupun sejatinya mereka digunakan sebagai media inputan 😀. Berikut ini keunggulan sekaligun kegunaan dari keduanya
UITextField : Media inputan dalam Xcode yang kebanyakan digunakan untuk satu baris kalimat. dan kebanyakan diterapkan untuk inputan yang membutuhkan validation dan berupa sensitif text . seperti Email dan Password. Keunggulan dari Textfiled merupakan inputan yang digunakan untuk sensitif text dan memerlukan validation inputan, terdapat fitur add placeholder pada Storyboard di Xcode defaultnya tetapi tidak memiliki fiture Scrolling, Editing, dan selector kata.
UITextField : Media inputan dalam Xcode yang kebanyakan digunakan untuk satu baris kalimat. dan kebanyakan diterapkan untuk inputan yang membutuhkan validation dan berupa sensitif text . seperti Email dan Password. Keunggulan dari Textfiled merupakan inputan yang digunakan untuk sensitif text dan memerlukan validation inputan, terdapat fitur add placeholder pada Storyboard di Xcode defaultnya tetapi tidak memiliki fiture Scrolling, Editing, dan selector kata.
UITextView : Media inputan dalam Xcode yang kebanyakan digunakan untuk menginputkan lebih dari satu baris kalimat dan biasanya digunakan untuk menuliskan kata yang tidak memerlukan validation atau sensitif text. seperti untuk inputan alamat dan Motto. Keunggulan dari TextView adalah terdapat fiture Scrolling, Editing, dan selector kata, tapi tidak memiliki fitur add Placeholder pada storyboard di Xcode defaultnya.
Untuk UITextView sendiri dalam menambahkan Placeholder memerlukan perlakuan Khusus sebagaimana kita memperlakukan seorang wanita, harus dengan lembut dan baik pula karena ia begitu sensitif dan perasa 😅. Ada dua cara bisa dengan menambahkan extension di class UITextView nya atau menambahkan di class Controllernya. berikut kedua caranya :
- Menambakan di Class Swift nya :
setup content di function viewDidLoad()
fieldContent.text = contentPlaceholder
fieldContent.textColor = .red
fieldContent.selectedRange = NSRange(location: 0, length: 0)
function awal yang dijalankan saat inputan pertama di UITextView
func textViewDidBeginEditing(_ textView: UITextView) {
if fieldContent.textColor == .red {
fieldContent.text = nil
fieldContent.textColor = .black
}else{
fieldContent.textColor = .red
}
}
function yang dijalankan saat akhir dari inputan di UITextView
func textViewDidEndEditing(_ textView: UITextView) {
if fieldContent.text.isEmpty {
fieldContent.text = contentPlaceholder
fieldContent.textColor = .black
}
}
- Sedangkan untuk cara yang kedua membuat file Extension :
extension UITextView {
private class PlaceholderLabel: UILabel { }
private var placeholderLabel: PlaceholderLabel {
if let label = subviews.compactMap( { $0 as? PlaceholderLabel }).first {
return label
} else {
let label = PlaceholderLabel(frame: .zero)
label.font = font
addSubview(label)
return label
}
}
@IBInspectable
var placeholder: String {
get {
return subviews.compactMap( { $0 as? PlaceholderLabel }).first?.text ?? ""
}
set {
let placeholderLabel = self.placeholderLabel
placeholderLabel.text = newValue
placeholderLabel.numberOfLines = 0
let width = frame.width - textContainer.lineFragmentPadding * 2
let size = placeholderLabel.sizeThatFits(CGSize(width: width, height: .greatestFiniteMagnitude))
placeholderLabel.frame.size.height = size.height
placeholderLabel.frame.size.width = width
placeholderLabel.frame.origin = CGPoint(x: textContainer.lineFragmentPadding, y: textContainerInset.top)
textStorage.delegate = self
}
}
}
extension UITextView: NSTextStorageDelegate {
public func textStorage(_ textStorage: NSTextStorage, didProcessEditing editedMask: NSTextStorageEditActions, range editedRange: NSRange, changeInLength delta: Int) {
if editedMask.contains(.editedCharacters) {
placeholderLabel.isHidden = !text.isEmpty
}
}
}
Oups .... jangan lupa menambahkan delegate ya di viewDidLoadnya :
textView.textStorage.delegate = self
Thanks .... 😁
Efisiens Display Text pada pembuatan App (IOS)
Reviewed by sdiik
on
September 17, 2019
Rating:
Mantap gan, lanjut berkarya
ReplyDelete