文字っぽいの。

文字を書いています。写真も混ざります。

UITextViewで `""` が `“”` に、 `--` が`—` に勝手に変換される問題の対処法

課題

UITextViewでエディタを作っていると、

  • "" が勝手に “”に変換される
  • '' が勝手に ‘’ に変換される
  • -- が勝手に に変換される

という状況に出会って困ることがあります。

これはなに?

これはスマート引用符とスマートダッシュという機能です。Macでコードや技術的な文章を書いている人は、

設定画面のこのチェックを外しましょうという記事に出会います。このスマート引用符とスマートダッシュiOS/iPadOSのUITextViewにも導入されているため、iPhone/iPadでも同様の自動変換が発生してしまいます。

対応策

OSの設定を変える

設定アプリ > 一般 > キーボード > スマート句読点をOFF

これでOS全体でスマート系(自動変換系)の機能がOFFになります。

UITextViewの設定を変える

OS側の設定でも変更可能ですが、わざわざOS設定を変えなくても特定のUITextViewでこれらの自動変換機能を止めたい場合があると思います。

UITextViewには smartQuotesTypesmartDashesTypeというプロパティがあるので、これらに .no を指定してあげるだけで良いです。

コード例としては、

override func viewDidLoad() {
    super.viewDidLoad()

    textView.smartDashesType = .no
    textView.smartQuotesType = .no
}

こんな感じ。