ios - doesn - uiscrollview swift programmatically
UIScrollView programáticamente en Swift (2)
No he podido encontrar una manera de habilitar con precisión el desplazamiento horizontal y vertical mediante programación con Swift (mis objetos son programáticos, por lo que no es factible utilizar el diseño automático en IB).
El tutorial que seguí permite desplazarse en ambas direcciones según lo previsto. El problema es que mi botón permanece en el mismo lugar que ocupa parte de la pantalla, sin importar dónde se desplace. He tenido este mismo resultado con otro tutorial y estoy bastante confundido en cuanto a por qué está sucediendo esto.
No he podido encontrar una respuesta a esta pregunta, así que supongo que otras encontrarán que esto es beneficioso.
Aquí está el código que tengo. Hice un proyecto muy básico basado en este tutorial: http://koreyhinton.com/blog/uiscrollview-crud.html
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
var scrollView: UIScrollView!
var containerView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
let buttonOne = UIButton.buttonWithType(UIButtonType.System) as UIButton
buttonOne.frame = CGRectMake(10, 50, 50, 50)
buttonOne.backgroundColor = UIColor.greenColor()
buttonOne.setTitle("test", forState: UIControlState.Normal)
buttonOne.addTarget(self, action: "buttonAction1x1:", forControlEvents: UIControlEvents.TouchUpInside)
self.scrollView = UIScrollView()
self.scrollView.delegate = self
self.scrollView.contentSize = CGSizeMake(1000, 1000)
containerView = UIView()
scrollView.addSubview(containerView)
view.addSubview(scrollView)
self.view.addSubview(buttonOne)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
containerView.frame = CGRectMake(0, 0, scrollView.contentSize.width, scrollView.contentSize.height)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
}
Así que deberías usar la siguiente línea.
containerView.userInteractionEnabled = true
Su código funciona perfectamente, pero hay un pequeño problema al agregar buttonOne en la vista.
Ha agregado buttonOne en self.view (es decir, subview de self.view), no containerView que está en scrollView.
Debes usar el siguiente código
containerView.addSubview(buttonOne)
en lugar de
self.view.addSubview(buttonOne)