UITextView scrollEnabled = YES no funciona después de establecer scrollEnabled = NO en iOS8

Creo una demostración para verificar UITextView scrollEnabled . Solo contiene 1 UITextView de UITextView y 2 botones y deshabilita el desplazamiento

¿Alguna idea para solucionar este problema? Si alguien no entiende mi explicación, verifique mi proyecto de demostración
Cualquier ayuda o sugerencia sería muy apreciada.

El problema es que en iOS 8, contentSize no se ajusta correctamente cuando se cambia scrollEnabled. Un pequeño ajuste en su método enableScrollButtonPressed funcionará con éxito en torno al problema.

 -(IBAction)enableScrollButtonPressed:(id)sender { self.myTextView.scrollEnabled = YES; self.myTextView.contentSize = [self.myTextView sizeThatFits:self.myTextView.frame.size]; } 

Sí, estás deshabilitando correctamente y habilitar scroll de textview no funciona en iOS8, puede ser un error o cualquier otra cosa, déjalo estar. Podemos deshabilitar o habilitar el desplazamiento de la vista de text simplemente cambiando ContentSize de textview .

 #import "ViewController.h" @interface ViewController () @property (weak, nonatomic) IBOutlet UITextView *myTextView; @end @implementation ViewController -(IBAction)enableScrollButtonPressed:(id)sender{ CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width+20, self.myTextView.bounds.size.height+20); [self.myTextView setContentSize:scrollableSize]; } -(IBAction)disableScrollButtonPressed:(id)sender{ [self.myTextView setContentOffset:CGPointMake(0, 0)]; [self performSelector:@selector(StopScroll) withObject:nil afterDelay:0.1]; } -(void)StopScroll{ CGSize scrollableSize = CGSizeMake(self.myTextView.bounds.size.width, self.myTextView.bounds.size.height/2); [self.myTextView setContentSize:scrollableSize]; } @end 

Había probado el código anterior, está funcionando bien, estoy usando xcode 7.2.1 y iOS 8.3 . Pruébalo y dime el resultado.

introduzca la descripción de la imagen aquí Después de search horas, me encuentro de una forma

 -(IBAction)enableScrollButtonPressed:(id)sender{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.myTextView.scrollEnabled = YES; [self.myTextView setText:self.myTextView.text]; self.myTextView.layoutManager.allowsNonContiguousLayout = false; }); } -(IBAction)disableScrollButtonPressed:(id)sender{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.myTextView.scrollEnabled = NO; }); } 

condición para eso es que tienes que desplazarte primero, entonces funcionará perfectamente

Significa que cuando se deshabilita el button de desplazamiento se toca textview se debe desplazar en alguna position no debe en la position pnetworkingeterminada

debe diseñar sus vistas después de habilitar o deshabilitar la vista de desplazamiento en su vista.

use viewWillLayoutSubviews / layoutIfNeeded methods.

Probé mi código y funcionó correctamente

 IBOutlet UITextView *tv; //---------Enable button action. -(IBAction)enable:(id)sender { tv.scrollEnabled=YES; } //---------Disable button action. -(IBAction)disable:(id)sender { tv.scrollEnabled=NO; } 

testing tu código una vez más en el dispositivo.

Cambie su propiedad de la siguiente manera.

en tu código …

 @property (weak, nonatomic) IBOutlet UITextView *myTextView; 

cambie el atributo de propiedad de la siguiente manera:

 @property (strong, nonatomic) IBOutlet UITextView *myTextView; 

entonces funcionará bien. Yo lo revisé.

 Please follow below steps simply self.myTextView.scrollEnabled = NO; self.myTextView.userInteractionEnabled = YES; self.myTextView.scrollEnabled = YES; 

Prueba esta

 func scrollViewDidScroll(_ scrollView: UIScrollView) { tableView.setContentOffset(CGPoint.zero, animated: false) }