Arreglando un UITextView dentro de un UIScrollView

Tengo un UISCrollView llamado scroll1. Dentro de scroll1, creo UIImageView programáticamente cargado con imágenes envueltas dentro de nuevas UIScrollViews. Entonces mi architecture es scroll1-> subView-> ImageView. El object de mi aplicación es que el usuario desplace la vista de desplazamiento primaria (scroll1) y cuando se desplaza los cambios de uiimages.
Junto con UIImageViews, aparece una UITextView que contiene datos de text. Cuando el usuario desplaza el valor del text cambia a lo largo mientras el usuario se desplaza.
Cuando el usuario se desplaza, quiero que UITextView permanezca en la parte superior de UIImageVIew como si esa vista de text estuviera incrustada dentro de ImageView. Similar a desplazar las páginas de un libro de cuentos, cuando se desplaza el text permanece fijo con la image hasta que la image desaparece. Estoy usando el siguiente código :

CGSize imageSize; imageSize.height = 693; imageSize.width = 512; self.scroll1.minimumZoomScale = 1.0; self.scroll1.maximumZoomScale = 1.0; self.scroll1.frame = CGRectMake(0,0,imageSize.width,imageSize.height); self.scroll1.scrollEnabled = YES; self.scroll1.contentSize = CGSizeMake(imageSize.width * imgs.count, imageSize.height ); self.scroll1.pagingEnabled = YES; self.scroll1.delegate = self; for (int i = 0; i < pants; i++) { CGFloat x = i * 512; subView = [[UIScrollView alloc]initWithFrame:CGRectMake(x, 0, 512, 693)]; subView2 = [[UIScrollView alloc]initWithFrame:CGRectMake(x + 512, 0, 512, 693)]; subView.clipsToBounds = NO; subView2.clipsToBounds = NO; UIImage *img = [imgs objectAtIndex:i]; UIImage *img2; if(i == pants - 1) img2 = [imgs objectAtIndex:i]; else img2 = [imgs objectAtIndex:i+1]; imageView = [[UIImageView alloc ] initWithImage:img]; imageView2 = [[UIImageView alloc ] initWithImage:img2]; // [imageView insertSubview:_leftText atIndex:-2]; // [imageView insertSubview:_leftText atIndex:1]; //[self.scroll1 insertSubview:_leftText aboveSubview:imageView]; //imageView.frame = subView.bounds; // [subView insertSubview:_leftText aboveSubview:imageView]; subView.scrollEnabled = NO; subView2.scrollEnabled = NO; subView.userInteractionEnabled = NO; subView2.userInteractionEnabled = NO; [subView addSubview:imageView]; [subView2 addSubview:imageView2]; [subView setContentSize:CGSizeMake(512, 708)]; [subView2 setContentSize:CGSizeMake(512, 708)]; [self.scroll1 addSubview:subView]; [self.scroll1 addSubview:subView2]; //[self.scroll1 addSubview:_leftText]; } 

El código anterior se usa para crear las subvistas pequeñas, leftText es textView.
Como muestra, probé varios methods para agregar el _leftText a la subView, porque pensé que agregarlo la convertiría automáticamente en parte y se incrustaría, pero no se muestra o no funciona. Incluso probé el siguiente método:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { [_leftText setContentOffset:self.scroll1.contentOffset animated:YES]; } 

Pero ese código hace que textView se comporte de una manera extraña y desaparece. Espero que sea de alguna manera que pueda lograr eso. Muchas gracias

Intente insert varias instancias de UITextField sobre cada subView.

 NSMutableArray *textFields=[NSMutableArray array]; for (int i=0; i<pants; i++) { CGFloat x=i * 512; UIScrollView *scrollView=[[UIScrollView alloc] initWithFrame:frame]; UIImageView *imageView =[[UIImageView alloc] initWithFrame:imageFrame]; UITextField *textField =[[UITextField alloc] initWithFrame:textFrame]; [scrollView addSubview:imageView]; [scrollView addSubview:textField]; // put it above the imageView [textFields addObject:textField]; } 

Entonces, hay varios campos de text en lugar de los únicos. A continuación, debe averiguar qué campo de text es visible en el momento actual en scrollViewDidScroll: método de delegado. Para esto es mejor usar la propiedad contentOffset de scroll1.

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { CGRect visibleRect; visibleRect.origin = scrollView.contentOffset; visibleRect.size = scrollView.bounds.size; // iterate through the textFields array to find out which textField is currently visible. } 

Buena suerte.