質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

308閲覧

UITextView内でタブ「\t」が改行される条件と回避法

taro_nii_chan

総合スコア207

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

1クリップ

投稿2020/03/12 09:07

UITextView内でタブ「\t」が改行される条件と回避法

環境

Xcode: Version 11.3.1
デバイス: Simulator 及び 実機

やりたい事

UITextView内でタブ「\t」を使いつつ、勝手に改行されないようにしたい。

やった事

以下のようなコードを書いて、空白文字がタブの時と半角スペース4つの時とで表示がどう変わるか実行してみました。

swift

1import UIKit 2 3class HogeViewController: UIViewController { 4 5 override func viewDidLoad() { 6 super.viewDidLoad() 7 8 self.view.backgroundColor = .white 9 10 var hogeTextViewText: String = "" 11 let tab: String = "\t" 12 let fourSpaces: String = " " 13 let newLine: String = "\n" 14 15 hogeTextViewText.append("いろはにほへと") 16 hogeTextViewText.append(tab) 17 hogeTextViewText.append("ちりぬるを") 18 hogeTextViewText.append(tab) 19 hogeTextViewText.append("わかよたれそ") 20 hogeTextViewText.append(tab) 21 hogeTextViewText.append("つれならむ") 22 hogeTextViewText.append(newLine) 23 24 hogeTextViewText.append("うゐのおくやま") 25 hogeTextViewText.append(fourSpaces) 26 hogeTextViewText.append("けふこえて") 27 hogeTextViewText.append(fourSpaces) 28 hogeTextViewText.append("あさきゆめみし") 29 hogeTextViewText.append(fourSpaces) 30 hogeTextViewText.append("ゑひもせす") 31 32 let hogeTextView: UITextView = UITextView(frame: CGRect(x: 100, y: 100, width: self.view.bounds.width - 200, height: self.view.bounds.height - 200)) 33 hogeTextView.text = hogeTextViewText 34 hogeTextView.backgroundColor = .white 35 hogeTextView.textColor = .black 36 hogeTextView.font = UIFont.systemFont(ofSize: 32) 37 hogeTextView.layer.borderWidth = 1.0 38 hogeTextView.layer.borderColor = UIColor.black.cgColor 39 self.view.addSubview(hogeTextView) 40 } 41} 42

その結果は次のような画面です。

イメージ説明

タブは行の途中でも改行され、半角スペースは特に改行されはしませんでした。

教えていただきたいこと

  • なぜこの様な違いが起こるのか
  • タブでも改行を強制的になくすことは可能か

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/03/13 13:13

回答依頼いただきましたが、質問についているタグはいずれも私の範疇ではありません。今後回答依頼だすときは質問タグのスコアの高い方を選んだほうが無駄うちにならずに済むと思います。
taro_nii_chan

2020/03/13 23:06

コメントありがとうございます。 質問につけたタグ「Swift」に対して、m.ts10806様の回答依頼欄には「Swift: score72」とあったので回答依頼させていただいた次第です。 私に勘違いがあったら申し訳ありません。失礼いたしました。 今後のためにお聞きしたいのですが、私の上記の確認方法では不十分なのでしょうか?
m.ts10806

2020/03/13 23:32

https://teratail.com/tags/Swift Swiftの1位の方のスコアは11590です。私104位らしいです。 Swift特化の質問に答えた記憶はないですね(そもそも自身のタグとして登録してません。)主にPHPなどWebアプリケーションに関するものを得意としてます。
taro_nii_chan

2020/03/13 23:47

分かりました。回答依頼欄に書いてあるからと言ってタグを登録してあるわけでもスコアが高いわけでもないという事ですね。 ありがとうございました。
hoshi-takanori

2020/03/14 06:58

タブというのは別にスペース 4 個分と決まってるわけではなく、むしろ「次のタブ位置」に飛ばすものです。で、どういう表示をお望みでしょうか?
taro_nii_chan

2020/03/14 08:10

おっしゃる通り、タブは「次のタブ位置」まで進むと理解しております。 質問の画像にも貼りましたように、コード上ではタブしか入れてないのに画面では「ちりぬるを」の後に改行されてしまいます。「わかよたれそ」が入る余地は十分にあると思われるのにです。 例に出した文言が七五調で元々揃ってるので良くなかったですが、文字列を区切り位置を揃えつつ意図せぬ改行の無い様にしたいです。 こんな説明で伝わりますでしょうか?
taro_nii_chan

2020/03/14 08:15

問題は「ちりぬるを」の後に勝手に改行が入ってしまっていることなのですが。。
hoshi-takanori

2020/03/14 08:37

「いろはにほへと」の前に for i in 0...25 { hogeTextViewText.append(".\(i < 25 ? tab : newLine)") } を入れるとデフォルトのタブ位置が分かりますのでご参考まで。また、その行にタブ位置がもうない場合は、次の行の先頭ではなく、次の行の最初のタブ位置まで飛ばされるようです。
hoshi-takanori

2020/03/14 08:38

ちなみに、デフォルトのタブ位置は文字の大きさとは無関係に設定されているようです。
taro_nii_chan

2020/03/14 08:52

タブ位置が分かるのは参考になりました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問