UIScrollView no se desplaza al agregar elemento en IB y código

Cuando creo una Scrollview en mi escena, y luego agrego un button a la escena en IB. Luego entro al código, establezco el tamaño del contenido, habilito la interacción del usuario y agrego otro button. Cuando ejecuto el progtwig en el simulador, Scrollview no funciona, si elimino el button que está en IB en la escena, funciona bien. ¿No es posible agregar elementos a la vista de desplazamiento tanto en IB como en progtwigción?

EDITAR: Pensé que podría ser algo en la aplicación que ya tenía. Así que decidí crear un nuevo proyecto y todo lo que tiene en él es el código, y la image de escena a continuación. De hecho, se agrega debajo de ScrollView.

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [myButton setTitle:@"My Button" forState:UIControlStateNormal]; myButton.frame = CGRectMake(100, 100, 150, 50); [scrollView addSubview:myButton]; scrollView.userInteractionEnabled = YES; [scrollView setContentSize:CGSizeMake(320, 1000)]; 

introduzca la descripción de la imagen aquí

Aquí su scrollView no se desplaza debido a la autoLayout, desmarque el layout automático si no lo está utilizando.

Acabo de hacer una similar a su requisito. Está funcionando bien, y después de permitir autoLayout, simplemente dejó de desplazarse.

Las restricciones de layout automático se ajustan a la parte visible de la pantalla, si los objects en scrollView son más que el tamaño de la pantalla, se desplazará.

Entonces, mi sugerencia si no está utilizando autoLayout simplemente desmarque, y funciona bien.

Aquí hay un enlace útil: http://developer.apple.com/library/ios/#releasenotes/General/RN-iOSSDK-6_0/_index.html#//apple_ref/doc/uid/TP40012166-CH1-SW19

Básicamente, lo que esto dice es que, con el layout automático, no se debe usar SetContentSize: y no debería hacerlo. En su lugar, su vista interna debe tener sus bordes ajustados a los bordes de la vista de desplazamiento. Déjame demostrar cómo lo resolví.

scrollBackground: una vista que contiene todas las demás vistas que necesita para desplazarse en la vista de desplazamiento.

 [scrollview addSubview:scrollBackground]; [scrollview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[scrollBackground(1000.0f)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollBackground)]]; [scrollview addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[scrollBackground(==scrollview)]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(scrollBackground)]]; 

La key aquí es aquellos | al principio y al final de la cadena VisualFormat. Esto le dirá a scrollview cuál es el contenido Size. Por supuesto, si tiene un contentSize más pequeño que el tamaño de fotogtwig de la vista de desplazamiento, no se desplazará en esa dirección. En mi ejemplo, esto es cierto para el ancho. Solo se desplaza hacia arriba y hacia abajo.

Asegúrese de configurar su tamaño de contenido en viewDidLoad o en algún momento después de que la vista ya se haya cargado desde el file nib.

Como Vishy Pointed out, tu Botón debe ser parte de la Jerarquía de ScrollView; de lo contrario, simplemente estarás desplazando una vista vacía.

En el caso de que haya publicado, la vista de desplazamiento no se desplazará porque todo el contenido está visible. Intente cambiar esa última línea para:

 [scrollView setContentSize:CGSizeMake(50, 50)]; 

y comenzará a desplazarse, ya que el tamaño del contenido es menor que todo el contenido de la vista.

compruebe la respuesta d2burke en esta pregunta , debe colocar su código en viewWillLayoutSubviews en lugar de viewDidAppear