2012-04-02 15 views
7

que tienen un UIScrollView con paginación habilitada como el siguiente:contenidos UIScrollView no permiten la interacción del usuario

container = [[UIScrollView alloc] initWithFrame:kScrollViewFrame]; 
[container setDelegate:self]; 
[container setShowsHorizontalScrollIndicator:YES]; 
[container setShowsVerticalScrollIndicator:NO]; 
[container setClipsToBounds:YES]; 
[container setPagingEnabled:YES]; 
[container setDecelerationRate:UIScrollViewDecelerationRateFast]; 
[container setBounces:NO]; 
[container setUserInteractionEnabled:NO]; 
[container setCanCancelContentTouches:NO]; 
[container setDelaysContentTouches:NO]; 

Para la UIScrollView, agrego varios UIWebViews, y establecer su interacción permitió a sí como tal.

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 

     self.frame = frame; 
     self.userInteractionEnabled = YES; 
    } 
    return self; 
} 

que rompe la paginación y todos los toques en el UIScrollView. Si configuro la interacción del usuario habilitada en NO, la página funciona, pero no puedo resaltar el texto en UIWebView. Intenté subclasificar UIScrollView como el siguiente, pero ocurren las mismas circunstancias. ¿Alguna idea?

- (id)initWithFrame:(CGRect)frame 
{ 
    NSLog(@"init"); 
    return [super initWithFrame:frame]; 
} 

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesBegan"); 

    [[self nextResponder] touchesBegan:touches withEvent:event]; 
} 

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesMoved"); 

    [[self nextResponder] touchesMoved:touches withEvent:event]; 
} 

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    NSLog(@"touchesEnded"); 
    [[self nextResponder] touchesEnded:touches withEvent:event]; 
} 
+0

¿Qué es lo que está tratando de lograr, necesita el desplazamiento de la vista de desplazamiento, desplazamiento de la vista de la web, paginación, selección? Por favor sé más específico. –

+0

Necesito la vista de desplazamiento a la página y el usuario para poder seleccionar texto en las webvies (que son subvistas de la vista de desplazamiento) La vista web no necesita desplazarse, solo puede tener su texto seleccionado. –

+0

He editado mi respuesta para reflejar sus requisitos, parece estar funcionando para mí. –

Respuesta

10

Al desactivar la interacción del usuario en el contenedor, también se desactiva efectivamente en las subvistas. Debe habilitarlo, haciendo que el evento táctil se propague por la jerarquía de vista;

[container setUserInteractionEnabled:YES]; 

Si desea desactivar el desplazamiento en el UIWebView acaba de entrar en su UIScrollView

yourWebView.scrollView.scrollEnabled = NO; 

He probado esto en mi dispositivo y puede tanto "la página a través de" la UIScrollView y seleccione el texto en UIWebView.

EDITAR:

I got this working! También debe permitir la cancelación táctil:

[container setCanCancelContentTouches:YES]; 
+0

Lo he intentado y rompe la interacción del usuario en las vistas web que son elementos secundarios de la vista de desplazamiento. –

+0

Intenté esto y ya no puedo desplazarme, aunque el tamaño del contenido de uiscrollview es de 10,000 px y el marco está configurado para las pantallas de ancho/alto (768 x 1024) Editar: En realidad, funciona si lo mantengo presionado durante varios segundos y intentar deslizar. Es muy difícil de buscar. ¿Estás experimentando este problema? –

+0

Usé un reconocedor de barrido y animé la paginación yo mismo. –

Cuestiones relacionadas