Pergunta

Estou subclassendo UIScrollView e, no início, preenchi este ShowsCrollView com alguns itens. Depois de preenchê -lo, configurei o quadro e contentize para esse showscrollView. Tudo funciona bem por enquanto, eu recebo eventos de toques, rolagem está funcionando ..

Mas, após a rotação para a paisagem, altero as coordenadas X e Y do quadro ShowsCrollView, para movê -lo do canto inferior para o canto superior direito. Em seguida, redimenso (altere a largura e a altura do quadro ShowsCrollView) e reordenou os itens neste rolo. No final, configurei o novo conteúdo. Agora, recebo o evento Touches apenas no primeiro 1/4 do ScrollView, a rolagem também funciona apenas em 1/4 do ScrollView, mas role todos os itens no ScrollView. Depois de todas as ações, escrevo um log: NSLog (@"ViewController: Setlandscape acabado: Tamanho: %f, %F Conteúdo: %f, %f", scrollView.frame.size.width, scrollView.frame.size.Height, scrollView .contentsize.width, scrollView.contentsize.Height);

Os valores estão corretos: ViewController: Setlandscape acabado: Tamanho: 390.000000, 723.000000 Conteúdo: 390.000000.950.000000

Ao girar de volta ao retrato, eu movo e redimenso tudo de volta e tudo funciona bem ..

Por favor ajude!

Foi útil?

Solução

Eu tive o mesmo problema e consegui fazê -lo funcionar definindo o tamanho do Self.View novamente depois de alterar o quadro do ScrollView. Não sei por que isso funciona, mas funciona.

// Set the view's frame
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}

// Set scrollview frame
if (UIInterfaceOrientationIsLandscape(toOrientation)) {
 self.scrollView.frame = CGRectMake(0, 0, 100, 300);
 self.scrollView.contentSize = CGSizeMake(100, 600);
}
else {
 self.scrollView.frame = CGRectMake(0, 0, 300, 100);
 self.scrollView.contentSize = CGSizeMake(600, 100);
}

// Move your content around here

// Set the view's frame again
if (UIDeviceOrientationIsLandscape(toOrientation)) {
 [self.view setSize:CGSizeMake(1024, 724)];
} else {
 [self.view setSize:CGSizeMake(768, 960)];
}

Outras dicas

Você tem que trazer scrollView à frente do superView, por exemplo:

[self.view bringSubviewToFron:scrollView];
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top