UITextView 不在 tvOS 中滚动
UITextView not Scrolling in tvOS
我的电视应用程序中有一个 UITextView
,当我尝试使其可聚焦时,UI 无法使其可聚焦并且我无法滚动它。我读了一些关于它的问题,有些人说这是一个已知问题,我们应该使用故事板。实际上我正在使用故事板,但仍然无法正常工作。我也尝试过使它成为 selectable
、scrollEnabled
和 userInteractionEnabled
然后最后也尝试了这行代码但是其中 none 正在工作。
descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)]
我还尝试打印 UITextView
的 bounds
abd contentSize
,这是日志
Content Size (740.0, 914.0)
Bounds (25.0, 0.0, 740.0, 561.0)
这是我的代码,有人可以帮助我吗
@IBOutlet weak var descriptionLbl: UITextView!
var currentModel : Model?
override func viewDidLoad() {
super.viewDidLoad()
descriptionLbl.selectable = true
descriptionLbl.scrollEnabled = true
descriptionLbl.userInteractionEnabled = true
descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)]
descriptionLbl.text = (currentModel?.description)! + (currentModel?.description)! + (currentModel?.description)!
descriptionLbl?.contentInset = UIEdgeInsets(top: 0.0, left: -25.0, bottom: 0.0, right: 0.0);
}
我想我不应该做这么多技巧,但它无论如何都不起作用。焦点实际上来到 UITextView
但它不滚动。有什么想法吗?
我相信你想要间接接触,而不是直接接触。以下是我如何设置可聚焦、可滚动的 UITextView:
self.selectable = YES;
self.userInteractionEnabled = YES;
self.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];
在 Swift 2.1 中,这对我有用:
myTextView.userInteractionEnabled = true
myTextView.selectable = true
myTextView.scrollEnabled = true
myTextView.panGestureRecognizer.allowedTouchTypes = [UITouchType.Indirect.rawValue]
希望对您有所帮助。
根据之前的回答,以下是 Swift 3.0.1 中对我有用的内容:
- 我不得不子类化
UITextView
以覆盖 canBecomeFocused
到 return true
- 我必须设置
panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]
- 我必须在代码中设置
isUserInteractionEnabled = true
- 在 Interface Builder 中设置它似乎不够
- 我必须在 Interface builder 中检查 "Scrolling Enabled"(在代码中设置
isScrollEnabled = true
也可以
我发现的其他一些细节:
bounces = true
使滚动感觉更自然(必须在代码中设置;不遵守 IB 设置)
showsVerticalScrollIndicator = true
必须在代码中设置;不遵守 IB 设置
- 覆盖
didUpdateFocus(in:with:)
以更改背景颜色以直观地指示焦点。
对于 Swift 5,这对我有用:
textView.isUserInteractionEnabled = true;
textView.isScrollEnabled = true;
textView.showsVerticalScrollIndicator = true;
textView.bounces = true;
textView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouch.TouchType.indirect.rawValue)]
如果你用objective-C来做这个,就很样本了:
_textView.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];
_textView.selectable = YES;
_textView.scrollEnabled = YES;
_textView.userInteractionEnabled = YES;
以上这些已经足够了,但是,如果你使用swift来做这个,它是行不通的。
我的电视应用程序中有一个 UITextView
,当我尝试使其可聚焦时,UI 无法使其可聚焦并且我无法滚动它。我读了一些关于它的问题,有些人说这是一个已知问题,我们应该使用故事板。实际上我正在使用故事板,但仍然无法正常工作。我也尝试过使它成为 selectable
、scrollEnabled
和 userInteractionEnabled
然后最后也尝试了这行代码但是其中 none 正在工作。
descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)]
我还尝试打印 UITextView
的 bounds
abd contentSize
,这是日志
Content Size (740.0, 914.0)
Bounds (25.0, 0.0, 740.0, 561.0)
这是我的代码,有人可以帮助我吗
@IBOutlet weak var descriptionLbl: UITextView!
var currentModel : Model?
override func viewDidLoad() {
super.viewDidLoad()
descriptionLbl.selectable = true
descriptionLbl.scrollEnabled = true
descriptionLbl.userInteractionEnabled = true
descriptionLbl.panGestureRecognizer.allowedTouchTypes = [NSNumber(integer: UITouchType.Direct.rawValue)]
descriptionLbl.text = (currentModel?.description)! + (currentModel?.description)! + (currentModel?.description)!
descriptionLbl?.contentInset = UIEdgeInsets(top: 0.0, left: -25.0, bottom: 0.0, right: 0.0);
}
我想我不应该做这么多技巧,但它无论如何都不起作用。焦点实际上来到 UITextView
但它不滚动。有什么想法吗?
我相信你想要间接接触,而不是直接接触。以下是我如何设置可聚焦、可滚动的 UITextView:
self.selectable = YES;
self.userInteractionEnabled = YES;
self.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];
在 Swift 2.1 中,这对我有用:
myTextView.userInteractionEnabled = true
myTextView.selectable = true
myTextView.scrollEnabled = true
myTextView.panGestureRecognizer.allowedTouchTypes = [UITouchType.Indirect.rawValue]
希望对您有所帮助。
根据之前的回答,以下是 Swift 3.0.1 中对我有用的内容:
- 我不得不子类化
UITextView
以覆盖canBecomeFocused
到 returntrue
- 我必须设置
panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouchType.indirect.rawValue)]
- 我必须在代码中设置
isUserInteractionEnabled = true
- 在 Interface Builder 中设置它似乎不够 - 我必须在 Interface builder 中检查 "Scrolling Enabled"(在代码中设置
isScrollEnabled = true
也可以
我发现的其他一些细节:
bounces = true
使滚动感觉更自然(必须在代码中设置;不遵守 IB 设置)showsVerticalScrollIndicator = true
必须在代码中设置;不遵守 IB 设置- 覆盖
didUpdateFocus(in:with:)
以更改背景颜色以直观地指示焦点。
对于 Swift 5,这对我有用:
textView.isUserInteractionEnabled = true;
textView.isScrollEnabled = true;
textView.showsVerticalScrollIndicator = true;
textView.bounces = true;
textView.panGestureRecognizer.allowedTouchTypes = [NSNumber(value: UITouch.TouchType.indirect.rawValue)]
如果你用objective-C来做这个,就很样本了:
_textView.panGestureRecognizer.allowedTouchTypes = @[@(UITouchTypeIndirect)];
_textView.selectable = YES;
_textView.scrollEnabled = YES;
_textView.userInteractionEnabled = YES;
以上这些已经足够了,但是,如果你使用swift来做这个,它是行不通的。