UIScrollView tips
let scrollView = UIScrollView()
let contentView = UIView()
let myTextField = UITextView()
scrollView.translatesAutoresizingMaskForAutolayoutConstraints = false
contentView.translatesAutoresizingMaskForAutolayoutConstraints = false
myTextField.translatesAutoresizingMaskForAutolayoutConstraints = false
scrollView.addSubview(contentView)
contentView.addSubview(myTextField)
NSLayoutConstraints.activate([
contentView.topAnchor.constraint(equalTo: scrollView.topAnchor),
contentView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),
contentView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
contentView.trailingAnchor.constraint(equalTo: scrollView.trailingAnchor),
])
I added a bunch of text fields to a scroll view, and for some reason, I couldn't tap on the text field.
In the visual ui debugger, Xcode gave me the warning: scrollable content size is ambiguous
However, the underlying issue was actually due to the content view inside the scroll view not having a fixed width and height.
Once I fixed that, everything worked :)
So - the fix was adding these two constraints:
NSLayoutConstraints.activate([
contentView.heightAnchor.constraint(equalTo: view.frameHeight), // note, you need to play around with this constant to get it right for your scroll content
contentView.widthAnchor.constraint(equalTo: view.frameWidth),
])
Red herrings that were totally unrelated, and didn't fix the bug:
- setting
scrollView.isUserInteractionEnabled = true
: this wasn't relevant, they already defaulted totrue
- setting a value for
scrollView.contentSize