UITextView
withプロパティをcontentSize
非常に大きな値に設定しました1000
。幅UITextView
は200で、スクロールが有効になり、水平方向のバウンスが有効になり、垂直方向のバウンスが無効になりますがUITextView
、大きなテキストでは垂直方向にスクロールします。どうすれば水平スクロールを強制できますか?
psここでの解決策は機能しません。
UITextView
withプロパティをcontentSize
非常に大きな値に設定しました1000
。幅UITextView
は200で、スクロールが有効になり、水平方向のバウンスが有効になり、垂直方向のバウンスが無効になりますがUITextView
、大きなテキストでは垂直方向にスクロールします。どうすれば水平スクロールを強制できますか?
psここでの解決策は機能しません。
UITextViewは、-UIScrollViewのサブクラスです。したがって、これを無効にするためにScrollViewDelegateメソッドを使用できます。
使用する -
- (void)scrollViewDidScroll:(id)aScrollView
{
[aScrollView setContentOffset:CGPointMake([scrollView contentOffset].x, 0.0)];
}
水平スクロール機能を期待どおりに機能させるためにさまざまな方法を試しましたが、これらの方法のいずれも機能しなかったため、UIScrollViewを作成し、スクロールビューのサブビューとしてUILabelを追加し、フレームの幅を設定しました。テキストとテキストフォントに従って動的にラベルを付け、その後、スクロールビューのcontentSizeをラベルの新しいフレームの幅と高さに等しくなるように設定しました。この方法を使用すると、水平方向にスクロールするテキストが作成されます。
JAHeliaのアドバイスを使用して、これは私のために働きました:
self.dishNameLabel.text = @"Here is some very longgggg text to test with";
float width = ceil([self.dishNameLabel.text sizeWithAttributes:@{NSFontAttributeName: [UIFont fontWithName:@"WorkSans-SemiBold" size:15.0]}].width);
self.dishNameLabel.frame = CGRectMake(self.dishNameLabel.frame.origin.x, self.dishNameLabel.frame.origin.y, width, self.dishNameLabel.frame.size.height);
self.dishNameScrollView.contentSize = CGSizeMake( width, self.dishNameScrollView.frame.size.height);
もちろん、テキストとフォントをそれぞれの仕様に置き換える必要があります