UITextView 多行輸入框


加入協定

class ViewController: UIViewController, UITextViewDelegate {

宣告資料

var textview = UITextView()
// UITextView 無預設placeholder, 新增UILabel 自訂placeholder
var placeholder = UILabel()
// UITextView 沒辦法透過點擊return 關閉鍵盤, 新增UIButton 觸發關閉鍵盤動作
var donebtn = UIButton()
let WIDTH = UIScreen.main.bounds.size.width

viewDidLoad

view.backgroundColor = .lightGray
    // frame
    /*textview.frame = CGRect(x: 0,
                              y: 0,
                              width: 0,
                              height: 0)*/
    // 大小
    textview.frame.size = CGSize(width: 200,
                                 height: 100)
    // 座標
    /*textview.frame.origin = CGPoint(x: 0,
                                      y: 0)*/
    // 中心點
    textview.center = CGPoint(x: WIDTH / 2,
                              y: 100)
    // 背景顏色
    textview.backgroundColor = .white
    // 背景圖片
    //textview.background = UIImage?
    // 連接delegate
    textview.delegate = self
    // 預設文字
    //textview.text = "test"
    // 文字顏色
    textview.textColor = .black
    // 系統預設字體
    //textview.font = UIFont.systemFont(ofSize: 15)
    // 自訂字體
    textview.font = UIFont(name: "Helvetica-Light",
                           size: 13)
    // 顯示為密碼輸入樣式
    //textview.isSecureTextEntry = true
    // 文字最小
    //textview.minimumFontSize = 16
    // 內容自適應標籤大小
    //textview.adjustsFontSizeToFitWidth = true
    // 內容可選
    //textview.isSelectable = false
    // 修改文字樣式, ex. 加粗, 新增底線
    textview.allowsEditingTextAttributes = true
    // 垂直滾動指示器
    textview.showsVerticalScrollIndicator = false
    // 水平滾動指示器
    textview.showsHorizontalScrollIndicator = false
    // 內容新增連結
    textview.dataDetectorTypes = .all
    /*
    UIDataDetectorTypes
     .address          地址
     .all              全部
     .phoneNumber      電話
     .link             網址
     */
    // 英文大寫
    textview.autocapitalizationType = .none
    /*
    UITextAutocapitalizationType
     .none             不設定大寫
     .words            單字開頭大寫
     .sentences        句子開頭大寫
     .allCharacters    全部大寫
     */
    // 文字對齊
    textview.textAlignment = .natural
    /*
    NSTextAlignment
     .left         向左對齊
     .center       置中
     .right        向右對齊
     .justified    最後一行對齊
     .natural      預設
     */
    // 圓角
    textview.layer.cornerRadius = 10
    // 邊框寬度
    textview.layer.borderWidth = 2
    // 邊寬顏色
    textview.layer.borderColor = UIColor.black.cgColor
view.addSubview(textview)

    placeholder.frame.size = CGSize(width: 190, 
                                    height: 20)
    placeholder.center = CGPoint(x: WIDTH / 2, 
                                 y: 80)
    placeholder.text = "   點選輸入"
    placeholder.textColor = .lightGray
    placeholder.backgroundColor = .white
    placeholder.font = UIFont.systemFont(ofSize: 13)
    placeholder.layer.cornerRadius = 10
view.addSubview(placeholder)

    donebtn.frame.size = CGSize(width: 80, 
                                height: 40)
    donebtn.center = CGPoint(x: WIDTH / 2, 
                             y: 190)
    donebtn.backgroundColor = .red
    donebtn.setTitle("結束編輯", 
                     for: .normal)
    donebtn.titleLabel?.font = UIFont.boldSystemFont(ofSize: 13)
    donebtn.setTitleColor(.white, 
                          for: .normal)
    donebtn.addTarget(self, 
                      action: #selector(donebtnpressed), 
                      for: .touchUpInside)
    donebtn.isHidden = true
view.addSubview(donebtn)

建立編輯觸發動作

// 開始編輯
func textViewDidBeginEditing(_ textView: UITextView) {
    self.placeholder.center = CGPoint(x: WIDTH / 2, 
                                      y: 65)
    self.placeholder.text = "   輸入中..."
    self.placeholder.textColor = .blue
    self.donebtn.isHidden = false
}

建立關閉鍵盤動作

func donebtnpressed(sender:UIButton){
    self.view.endEditing(true) // 結束編輯
    self.donebtn.isHidden = true // 隱藏按鈕
    self.placeholder.textColor = .lightGray

    if self.textview.text.isEmpty {
        self.placeholder.center = CGPoint(x: WIDTH / 2, 
                                          y: 80)
        self.placeholder.text = "   點選輸入"
    }
    else {
        self.placeholder.text = "   點選修改"
    }
}

更多常用設定

// 編輯開始前
func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
}
// 退出編輯前
func textViewShouldEndEditing(_ textView: UITextView) -> Bool {
}
// 結束編輯
func textViewDidEndEditing(_ textView: UITextView) {
}
// 輸入內容改變
func textViewDidChange(_ textView: UITextView) {
}
// 選擇內容改變
func textViewDidChangeSelection(_ textView: UITextView) {
}

results matching ""

    No results matching ""