【问题标题】:Why is the cursor not at the top of the UITextView?为什么光标不在 UITextView 的顶部?
【发布时间】:2015-03-21 22:48:46
【问题描述】:

顶部 UITextView 中的光标显示完全正常,但其下方的第二个 UITextView 将光标置于其下方 3-4 行处。因此,当我在其中输入任何内容时,如下面的屏幕截图所示,这是不对的。此视图控制器的代码显示在屏幕截图下方。

class AddQuestionViewController: UIViewController, UITextViewDelegate {

    @IBOutlet weak var questionTextView: UITextView!
    @IBOutlet weak var answerTextView: UITextView!
    @IBOutlet weak var doneBarButton: UIBarButtonItem!
    @IBOutlet weak var questionLabel: UILabel!
    @IBOutlet weak var answerLabel: UILabel!

    weak var delegate: AddQuestionViewControllerDelegate?

    override func viewWillAppear(animated: Bool) {

        super.viewWillAppear(animated)

        self.questionTextView.layer.borderWidth = 0.5
        self.questionTextView.layer.borderColor = UIColor.lightGrayColor().CGColor
        self.questionTextView.layer.cornerRadius = 8

        self.answerTextView.layer.borderWidth = 0.5
        self.answerTextView.layer.borderColor = UIColor.lightGrayColor().CGColor
        self.answerTextView.layer.cornerRadius = 8

        self.questionTextView.becomeFirstResponder()

    }

    @IBAction func cancel() {

        delegate?.addQuestionViewControllerDidCancel(self)

    }

    @IBAction func done() {

        let item = Question()
        item.question = questionTextView.text
        item.answer = answerTextView.text
        item.checked = false
        delegate?.addQuestionViewController(self, didFinishAddingQuestion: item)

    }

    func textView(textView: UITextView, shouldChangeTextInRange range: NSRange, replacementText text: String) -> Bool {

        if textView == questionTextView {
            let oldText: NSString = questionTextView.text
            let newText: NSString = oldText.stringByReplacingCharactersInRange(range, withString: text)

            if newText.length > 0 {
                doneBarButton.enabled = true
            } else {
                doneBarButton.enabled = false
            }
        }
        return true
    }

    func textViewDidChange(textView: UITextView) {

        let temp: NSString = textView.text

        if textView == questionTextView {
            self.questionLabel.hidden = temp.length > 0
        } else {
            self.answerLabel.hidden = temp.length > 0
        }

    }

    func textViewDidEndEditing(textView: UITextView) {

        let temp: NSString = textView.text

        if textView == questionTextView {
            self.questionLabel.hidden = temp.length > 0
        } else {
            self.answerLabel.hidden = temp.length > 0
        }

    }

}

【问题讨论】:

  • 我不是 IOS 开发人员(只是 OSX):检查 IB 中的设置,它们可能会有所不同。此外 (OSX) becomeFirstResponder 已弃用。
  • 检查了两者的设置。什么都没发现..这是一个奇怪的问题。
  • 我在过去的视图中也遇到过这种情况,删除 textview 并将其再次添加到视图中(带有约束)似乎有效。
  • 请看下面的答案,我想你需要这个。 stackoverflow.com/questions/18931934/…

标签: ios xcode swift autolayout uitextview


【解决方案1】:

它可以是 UILabel 而不是 UITextView 吗? UILabel 倾向于将文本“居中”而不是左对齐。

【讨论】:

  • 不。没有 UILabel 也会发生。
【解决方案2】:

你现在可能已经解决了这个问题,以防我发布这个:

self.automaticallyAdjustsScrollViewInsets = false
textView.contentOffset = CGPointZero

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-18
    • 1970-01-01
    • 2013-09-22
    • 1970-01-01
    • 2016-08-11
    • 2020-07-03
    • 2012-11-26
    • 2013-10-16
    相关资源
    最近更新 更多