首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >textField不会在可编程滚动视图中移动

textField不会在可编程滚动视图中移动
EN

Stack Overflow用户
提问于 2019-12-31 21:45:04
回答 1查看 31关注 0票数 0

我有一台UIScrollView。我有一台UITextField和一台UILabel。由于某些原因,我的UITextField不会在我的滚动视图中移动,但我的UILablel会。我添加UITextField的方式与使用scrollView.addSubview(textField)将我的UILabel添加到滚动视图中的方式相同。有人看到我在这件事上做错了什么吗?

代码语言:javascript
运行
复制
import Foundation
import UIKit

//here
protocol AddContactDelegate {
func addContact(contact: Contact)
}



class AddContactController: UIViewController {

//delegate
var delegate: AddContactDelegate?

//TextField
let textField: UITextField = {
    let tf = UITextField()
    tf.placeholder = "Add Your Workout Title"
    tf.textAlignment = .center
    tf.translatesAutoresizingMaskIntoConstraints = false
    return tf
}()


override func viewDidLoad() {
    super.viewDidLoad()

    //making scroll view
    let screensize: CGRect = UIScreen.main.bounds
    let screenWidth = screensize.width
    let screenHeight = screensize.height
    var scrollView: UIScrollView!
    scrollView = UIScrollView(frame: CGRect(x: 0, y: 120, width: screenWidth, height: screenHeight))

    scrollView.contentSize = CGSize(width: screenWidth, height: 2000)
    view.addSubview(scrollView)


    //setting up how view looks-----
    view.backgroundColor = .white

    //top buttons
   self.navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(handleDone))

   self.navigationItem.leftBarButtonItem = UIBarButtonItem(barButtonSystemItem: .cancel, target: self, action: #selector(handleCancel))

    //view elements
    view.addSubview(textField)
    scrollView.addSubview(textField)
    textField.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    textField.centerYAnchor.constraint(equalTo: view.centerYAnchor).isActive = true
    textField.widthAnchor.constraint(equalToConstant: view.frame.width - 64).isActive = true
   textField.becomeFirstResponder()

    //excercise label
    let excerciseNumber = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
    excerciseNumber.center = CGPoint(x: view.frame.width / 2 , y: view.frame.height / 20)
    excerciseNumber.textAlignment = .center
    excerciseNumber.text = "Workout Title"
    self.view.addSubview(excerciseNumber)
    scrollView.addSubview(excerciseNumber)

}

   //done button
@objc func handleDone(){
    print("done")

    guard let fullname = textField.text, textField.hasText else {
        print("handle error here")
        return
    }

    let contact = Contact(fullname: fullname, hello: "hi")
    delegate?.addContact(contact: contact)
    print(contact.fullname)
    print(contact.hello)

}

//cancel button
@objc func handleCancel(){
    self.dismiss(animated: true, completion: nil )
}

}
EN

Stack Overflow用户

回答已采纳

发布于 2019-12-31 21:48:53

由于使用view而不是scrollView将文本字段的中心x和y设置为中心,因此需要

代码语言:javascript
运行
复制
textField.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
  textField.centerXAnchor.constraint(equalTo: scrollView.centerXAnchor),
  textField.centerYAnchor.constraint(equalTo: scrollView.centerYAnchor),
  textField.widthAnchor.constraint(equalToConstant: view.frame.width - 64)
])

也删除

代码语言:javascript
运行
复制
view.addSubview(textField)
self.view.addSubview(excerciseNumber)
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59544895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档