Impossible d'éditer un UITextView dans un ScrollView

Encore un soucis avec les scrollView… Les réponses que j’ai trouvé sur d’autres sites n’ont aucun effet pour moi.
Simplement, J’ai un UITextView dans un UIScrollView, cependant lorsque je run l’app, si je clique sur mon texte, le clavier n’apparaît pas, je ne peux rien faire. J’ai compris que le ScrollView prenait le dessus sur mon UITextView et m’empêche de la modifier, j’ai essayé différentes configurations, aucune ne fonctionne.
Mon code :
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {

var imageView2: UIImageView!
var scrollView: UIScrollView!
var textView = UITextView()

override func viewDidLoad() {
super.viewDidLoad()

imageView2 = UIImageView(image: UIImage(named: "image.png"))

scrollView = UIScrollView(frame: view.bounds)
scrollView.contentSize = imageView2.bounds.size
scrollView.isUserInteractionEnabled = true
scrollView.isExclusiveTouch = true
scrollView.canCancelContentTouches = true
self.scrollView.delegate = self
view.addSubview(scrollView)
scrollView.addSubview(imageView2)


textView = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290))
textView.backgroundColor = UIColor(red: 0.00, green: 1.00, blue: 0.00, alpha: 1.00)
textView.text = "bla bla bla"
imageView2.addSubview(textView) 
}

Je pense que la solution est simple, mais ça fait 3 jours que je la cherche, je poste donc ce sujet. Merci !

Dans ce code, la textview est ajouté dans l’imageview, c’est voulu ?
Tu as donc une scrollview, qui contient une image qui elle-même contient un textview (sachant qu’un textview est aussi une scrollview).

Hello VH24,

Effectivement Maxime a pauser le doigt sur le problème,

modifie juste:
imageView2.addSubview(textview)
par
scrollView.addSubview(textview)
et cela va fonctionner.

Cependant ta solution peut aussi fonctionner pour sa il suffit simplement de rajouter ceci :
imageView2.isUserInteractionEnabled = true

Bonjour Maxime et @Samir
En effet mon text est dans l’image car je voulais scroller mon image avec le texte. Effectivement si je l’ajoute directement au scrollView, cela fonctionne, en tous cas pour le “scrolling”. Je m’explique :
J’ai une imageView, et j’ai plusieurs UITextView avec, j’aimerai pouvoir zoomer/dezoomer sur l’imageView, et que les UITextView suivent également. Mais dans la fonction suivante, je ne peux parvient pas à spécifier mes UITextView, c’est pour cela que je les avais mis dans l’imageVIew :

func viewForZooming(in scrollView: UIScrollView) -> (UIView)? {
    
    return imageView2
    // Comment pourrais-je return mes UITextView également s'ils ne sont pas dans l'imageView ?
    
}

Une idée ? ^^

Lis la fin de ma réponse :slight_smile:

1 « J'aime »