Text Fieldのなんやかんやをカスタムした


こんなTextFieldを実装したのでメモしとく

  • 入力カーソル:無効
  • 範囲選択:無効
  • コピー・ペースト・選択:無効(吹き出しが出ないようにする)
CustomTextField.swift
import UIKit

class CustomTextField: UITextField {

    // 入力カーソル:無効
    override func caretRect(for position: UITextPosition) -> CGRect {
        return CGRect.zero
    }

    // 範囲選択:無効
    func selectionRects(for range: UITextRange) -> [Any] {
        return []
    }

    // コピー・ペースト・選択:無効
    override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool {
        return false
    }
}

ちなみに、、、

CustomTextField.swift

    open var caretFlag: Bool = false

    // 入力カーソル:無効、有効の切り替え
    override func caretRect(for position: UITextPosition) -> CGRect {
        if caretFlag {
            return super.caretRect(for: position)
        } else {
            return CGRect.zero
        }
    }

こうすることでcaretFlagがtrueならカーソル非表示、falseならカーソル表示に切り替えが可能です。

Storyboardの場合はCustomTextFieldをクラスとして指定してやれば実装完了です。