Posts

Post not yet marked as solved
2 Replies
480 Views
There are two problems which have an one root. I present ViewController modally and it has UITextView in ScrollView, when I call dismiss it, right after that, the text on UITextView is erasing This bug affects on following solution, describing here https://stackoverflow.com/questions/50011682/handling-scroll-views-with-custom-interactive-view-controller-presentation-an And If I uncomment following code, and use Custom modal transition, describing on article above, I will get that every time when I touch the ChildViewController and moving the finger, the UITextView will be empty on screen, and when I unthouch screen, the text will be shown on screen. class ChildViewController: UIViewController {     private let descriptionTextView: UITextView = {         let tv = UITextView()         tv.font = .systemFont(ofSize: 15)         tv.isSelectable = true         tv.textContainer.lineFragmentPadding = .zero         tv.textContainerInset = .zero         tv.isEditable = false         tv.isScrollEnabled = false         tv.isUserInteractionEnabled = true         tv.dataDetectorTypes = .link         tv.bounces = false         tv.backgroundColor = UIColor(hue: 0.2, saturation: 0.8, brightness: 0.9, alpha: 1)         tv.text = "There are two view controllers: ViewController and TextViewController. Both view controllers are showing a UITextView and a button. I've created a segue called \"textSegue\" when I press the \"Text\" button on the ViewController the text is passed to the TextViewController and displayed. On the TextViewController I can select the text and press the 'Bold' button to make the text bold. When I press the \"Back\" button, the TextViewController is dismissed and the ViewController will show the attributed text. The problem is, when I press the \"Text\" button again and the TextViewController shows, the text in the UITextView doesn't show the attributed text (it is'n bold anymore)."         tv.translatesAutoresizingMaskIntoConstraints = false         return tv     }()     private lazy var scrollView: UIScrollView = {         let scrollView = UIScrollView()         scrollView.bounces = false         scrollView.translatesAutoresizingMaskIntoConstraints = false         scrollView.backgroundColor = UIColor(hue: 0.2, saturation: 0.8, brightness: 0.9, alpha: 1)         return scrollView     }()     override func viewDidLoad() {         super.viewDidLoad()         view.backgroundColor = UIColor(hue: 0.2, saturation: 0.8, brightness: 0.9, alpha: 1)         view.layer.cornerRadius = 24         view.addSubview(scrollView)         scrollView.addSubview(descriptionTextView)         addDismissButton()         NSLayoutConstraint.activate([             scrollView.topAnchor.constraint(equalTo: view.topAnchor, constant: 24),             scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),             scrollView.leftAnchor.constraint(equalTo: view.leftAnchor),             scrollView.rightAnchor.constraint(equalTo: view.rightAnchor),             descriptionTextView.topAnchor.constraint(equalTo: scrollView.topAnchor),            descriptionTextView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor),             descriptionTextView.leftAnchor.constraint(equalTo: scrollView.leftAnchor),             descriptionTextView.rightAnchor.constraint(equalTo: scrollView.rightAnchor),             descriptionTextView.widthAnchor.constraint(equalTo: scrollView.widthAnchor),         ])     }     private func addDismissButton() {         let button = UIButton(type: .system)         button.setTitle("Dismiss", for: .normal)         button.addTarget(self, action: #selector(dismissSelf), for: .touchUpInside)         view.addSubview(button)         button.translatesAutoresizingMaskIntoConstraints = false         NSLayoutConstraint.activate([             button.centerXAnchor.constraint(equalTo: view.centerXAnchor),             button.bottomAnchor.constraint(equalTo: view.bottomAnchor),             button.widthAnchor.constraint(equalToConstant: 200),             button.heightAnchor.constraint(equalToConstant: 80),             ])     }         @objc func dismissSelf() {         self.dismiss(animated: true)     } } class ParentViewController: UIViewController {     private let transition = PanelTransition()     @IBAction func openDidPress(_ sender: Any) {         let child = ChildViewController() //        child.transitioningDelegate = transition //        child.modalPresentationStyle = .custom         child.modalPresentationStyle = .fullScreen                present(child, animated: true)     } } And If I uncomment following code child.transitioningDelegate = transition child.modalPresentationStyle = .custom, and use Custom modal transition, describing on article above, I will get that every time when I touch the ChildViewController and moving the finger, the UITextView will be empty on screen, and when I untouch the screen, the text will be shown on screen. And I could catch this on View Debuger, and text is existing in UITextView, but on screen is not. Is It bug on UITextView?
Posted
by llodi.
Last updated
.