ストーリーボードにフォントサイズ14のUITextViewを作成し、ViewControllerのdetailDescriptionLabelプロパティに接続しました。このコードはviewDidLoadにあります:
self.detailDescriptionLabel.font=[UIFont systemFontOfSize:10];
NSLog(@"text is %@; font is %@", self.detailDescriptionLabel.text, self.detailDescriptionLabel.font);
コンソール出力は次のとおりです。
text is Lorem Ipsum; font is (null)
フォントがnilに設定されているのはなぜですか? setFont:は機能しています。フォントは縮小します。フォントを取得したいので、ジェスチャーの後でフォントのlineHeightを呼び出すことができます。このようにして、次のコードでどの行がタップされたかを確認できます。
int line = [tap locationInView:tap.view].y / self.detailDescriptionLabel.font.lineHeight;
ここでも、フォントはnilです。 lineは-2147483648に設定されていますが、これは明らかに私が望むものではありません。
InterfaceBuilderでこのUITextView
の「選択可能」チェックボックスをオンにしてみてください。これは、属性インスペクターにあります。以下の@VahramDodoryanのコメントによると、選択をサポートしたくない場合は、selectable
をfalseに設定できます。
これが機能する理由を説明することはできませんが、おそらくUIKitのバグです。フォントプロパティがnilであるIBOutlet
からUITextView
があり、afterそのtextプロパティが設定されていました。試行錯誤しながらこの解決策にたどり着きました。
IOSの最近のリリースでこの問題が引き続き発生する場合は、レーダーを開くことを検討してください。
テキストビューにあるすべてのプロパティと制約を変更してみました。
上記のように選択可能なものを含む
結局、欲求不満でそれを削除して再度追加しましたが、それは満足のいく修正ではありませんでした。