Reputation: 57
I created the following textview using the interface builder and it scrolled. However the same setup does not scroll if done programmatically. I created a demo project to demonstrate this.
In my view controller this is what I have.
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let customTextView = CustomTextView(frame: CGRect(x: 0,
y: 0,
width: 400,
height: 400))
customTextView.center = self.view.center
self.view.addSubview(customTextView)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
In the custom text view class this is what I have.
import Foundation
import UIKit
class CustomTextView: UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setLayout()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
private var imageView: UIImageView?
private var textView: UITextView?
private func setLayout() {
imageView = .init()
textView = .init()
imageView?.frame = self.frame
textView?.frame = CGRect(x: (imageView?.frame.size.width)! * 0.5,
y: (imageView?.frame.size.height)! * 0.5,
width: 200,
height: 200)
textView?.clipsToBounds = true
textView?.font = UIFont.systemFont(ofSize: 16)
textView?.isEditable = false
textView?.preservesSuperviewLayoutMargins = false
textView?.text = """
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque aliquam gravida lobortis. Quisque mollis varius sollicitudin. Maecenas pharetra consectetur nunc et imperdiet. Etiam sagittis, libero ut mollis cursus, diam nibh lobortis mi, a aliquam dolor odio quis leo. Suspendisse semper leo nec dolor vulputate, sit amet fermentum elit aliquam. Curabitur ultricies, mi vel molestie pellentesque, purus lectus tincidunt lacus, quis iaculis nisi tellus non tellus. Vivamus at diam vel odio mollis accumsan. Aenean at eros lacinia, mattis ipsum id, dignissim erat. Quisque eget volutpat nisi. Etiam maximus dictum felis at suscipit. Suspendisse ac arcu iaculis, aliquet justo vestibulum, efficitur mi. Nam finibus ante nisl, at egestas dolor rutrum a.
Ut vel mauris ac tellus commodo tempor ut ut dolor. Nam vel lectus maximus, vulputate tortor nec, mollis lectus. Aenean semper nisi a cursus ultrices. Aliquam dignissim blandit arcu quis efficitur. Vestibulum ipsum leo, molestie id justo non, ornare vulputate diam. Maecenas eu turpis euismod, placerat lorem ut, auctor lacus. Aenean at odio fringilla, bibendum metus in, dapibus lectus. Etiam dictum tempus velit, tempor ornare purus cursus a. Suspendisse odio erat, viverra non purus in, rutrum aliquet erat.
"""
imageView?.addSubview(textView!)
textView?.center = (imageView?.center)!
self.addSubview(imageView!)
}
}
Upvotes: 0
Views: 72
Reputation: 1486
You have added the textView to the imageView. The UImageView's userInteraction is disabled by default. Add the below code after imageView's init and it should work fine.
imageView?.isUserInteractionEnabled = true
Now you should be able to scroll. Hope it helps.
Upvotes: 3