Прокрутка не работает, когда я расширяю свой UITextView - PullRequest
1 голос
/ 06 июля 2019

У меня проблема с моим UIScrollView. Я добавляю пользовательский вид контента. У него есть некоторые ограничения, но он не прокручивается, когда мое текстовое представление расширяется. Кто-нибудь может мне помочь?

Я пробовал все, но я не знаю, как сделать UIScrollView динамическим. Я не могу найти хорошего решения. Все представления отображаются правильно. Мне нужно это на сегодня.

private lazy var nameTextFieldView: TaskNameView = {
    let nameTextFieldView = TaskNameView()

    nameTextFieldView.translatesAutoresizingMaskIntoConstraints = false
    return nameTextFieldView
}()

private lazy var descriptionView: TaskDescriptionView = {
    let descriptionView = TaskDescriptionView()

    descriptionView.translatesAutoresizingMaskIntoConstraints = false
    return descriptionView
}()

private lazy var notificationView: NotificationView = {
    let notificationView = NotificationView()
    notificationView.backgroundColor = .white
    notificationView.addNotificationButton.addTarget(self, action: #selector(setDateForNewTask), for: .touchUpInside)

    notificationView.translatesAutoresizingMaskIntoConstraints = false
    return notificationView
}()

private lazy var mainScrollViewContentView: UIView = {
    let mainScrollViewContentView = UIView()
    mainScrollViewContentView.addSubview(nameTextFieldView)
    mainScrollViewContentView.addSubview(notificationView)
    mainScrollViewContentView.addSubview(descriptionView)

    mainScrollViewContentView.translatesAutoresizingMaskIntoConstraints = false
    return mainScrollViewContentView
}()

private lazy var mainScrollView: UIScrollView = {
    let mainScrollView = UIScrollView()
    mainScrollView.addSubview(mainScrollViewContentView)

    mainScrollView.translatesAutoresizingMaskIntoConstraints = false
    return mainScrollView
}()

lazy var addTaskButton: PrimaryActionButton = {
    let addTaskButton = PrimaryActionButton()
    addTaskButton.setTitle("Save".uppercased(), for: .normal)
    addTaskButton.addTarget(self, action: #selector(saveNewTask), for: .touchUpInside)

    return addTaskButton
}()

private func setupLayout() {
    view.backgroundColor = .groupTableViewBackground

    view.addSubview(mainScrollView)
    view.addSubview(addTaskButton)

    NSLayoutConstraint.activate([
        mainScrollView.topAnchor.constraint(equalTo: view.topAnchor),
        mainScrollView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
        mainScrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
        mainScrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
        mainScrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        mainScrollView.centerYAnchor.constraint(equalTo: view.centerYAnchor),

        mainScrollViewContentView.topAnchor.constraint(equalTo: mainScrollView.topAnchor),
        mainScrollViewContentView.leadingAnchor.constraint(equalTo: mainScrollView.leadingAnchor),
        mainScrollViewContentView.trailingAnchor.constraint(equalTo: mainScrollView.trailingAnchor),
        mainScrollViewContentView.bottomAnchor.constraint(equalTo: mainScrollView.bottomAnchor),
        mainScrollViewContentView.centerXAnchor.constraint(equalTo: mainScrollView.centerXAnchor),
        mainScrollViewContentView.centerYAnchor.constraint(equalTo: mainScrollView.centerYAnchor),

        nameTextFieldView.topAnchor.constraint(equalTo: mainScrollViewContentView.topAnchor, constant: 0),
        nameTextFieldView.leadingAnchor.constraint(equalTo: mainScrollViewContentView.leadingAnchor, constant: 0),
        nameTextFieldView.trailingAnchor.constraint(equalTo: mainScrollViewContentView.trailingAnchor, constant: 0),

        notificationView.topAnchor.constraint(equalTo: nameTextFieldView.bottomAnchor, constant: 20),
        notificationView.leadingAnchor.constraint(equalTo: mainScrollViewContentView.leadingAnchor, constant: 0),
        notificationView.trailingAnchor.constraint(equalTo: mainScrollViewContentView.trailingAnchor, constant: 0),

        descriptionView.topAnchor.constraint(equalTo: notificationView.bottomAnchor, constant: 20),
        descriptionView.leadingAnchor.constraint(equalTo: mainScrollViewContentView.leadingAnchor, constant: 0),
        descriptionView.trailingAnchor.constraint(equalTo: mainScrollViewContentView.trailingAnchor, constant: 0),

        addTaskButton.centerXAnchor.constraint(equalTo: view.centerXAnchor),
        addTaskButton.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: -30),
        addTaskButton.heightAnchor.constraint(equalToConstant: 50),
        addTaskButton.widthAnchor.constraint(equalToConstant: 250)
    ])
}

override func viewDidLoad() {
    super.viewDidLoad()
    title = "New task"
    setupLayout()
}

1 Ответ

0 голосов
/ 07 июля 2019

1) установить ограничения прокрутки сверху вниз

2) установить ведущий привязку первого просмотра с ведущим прокрутки прокрутки

3) последнюю кнопку bottomAnchor установить снизу прокрутки

 NSLayoutConstraint.activate([

            scrollView.leftAnchor.constraint(equalTo: view.leftAnchor),
            scrollView.rightAnchor.constraint(equalTo: view.rightAnchor),
            scrollView.topAnchor.constraint(equalTo: stausBarView.bottomAnchor),
            scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor),

            customheaderView.leadingAnchor.constraint(equalTo: scrollView.leadingAnchor),
            customheaderView.leftAnchor.constraint(equalTo:view.leftAnchor),
            customheaderView.rightAnchor.constraint(equalTo:view.rightAnchor),
            customheaderView.topAnchor.constraint(equalTo:scrollView.topAnchor, constant: 20),
            customheaderView.heightAnchor.constraint(equalToConstant: 60),

            titleLbl.leftAnchor.constraint(equalTo: customheaderView.leftAnchor, constant: 12),
            titleLbl.rightAnchor.constraint(equalTo: cancelBT.leftAnchor, constant: -12),
            titleLbl.centerYAnchor.constraint(equalTo: customheaderView.centerYAnchor),


            loginBT.widthAnchor.constraint(lessThanOrEqualTo: scrollView.widthAnchor, constant:-24),
            loginBT.topAnchor.constraint(equalTo: registerBT.bottomAnchor, constant: 20),
            loginBT.centerXAnchor.constraint(equalTo: view.centerXAnchor),

            loginBT.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor, constant: -16),

 ])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...