Подтвердить что ты не робот

UIScrollView программно в Swift

Мне не удалось найти способ точного включения программ горизонтальной и вертикальной прокрутки с помощью Swift (мои объекты программны, что делает невозможным использование автоматической компоновки в IB).

В приведенном ниже учебном пособии предусмотрена прокрутка в обоих направлениях по назначению. Проблема заключается в том, что моя кнопка остается на том же месте, что и часть экрана, независимо от того, где вы прокручиваете. У меня был такой же результат с другим учебником, и я довольно смущен, почему это происходит.

Я не смог найти ответ на этот вопрос, поэтому я предполагаю, что некоторые другие найдут это полезным.

Вот код, который у меня есть. Я сделал очень простой проект, основанный на этом учебнике: 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()
    }


}
4b9b3361

Ответ 1

Ваш код работает отлично, но есть небольшая проблема при добавлении buttonOne в представление.

Вы добавили buttonOne на self.view(i.e subview of self.view), а не containerView, который находится в scrollView.

Вы должны использовать следующий код

containerView.addSubview(buttonOne)

вместо

self.view.addSubview(buttonOne)

Ответ 2

Итак, вы должны использовать следующую строку

containerView.userInteractionEnabled = true