【问题标题】:How do I adjust the size of a UITextView? Swift如何调整 UITextView 的大小?迅速
【发布时间】:2015-02-11 18:26:18
【问题描述】:

我的应用有问题,请看这张照片

现在我在 textView 上输入,我想要一种方法来调整 textview 的大小或将其移动到顶部或滚动到我输入的最后一个位置,请帮助

我在这里看到了很多答案,但都不适用于我,这是我尝试其中一个答案时的代码

import UIKit

class AddEditClassNoteViewController: UIViewController {

    @IBOutlet var keyboardHeightLayoutConstraint: NSLayoutConstraint?


    override func viewDidLoad() {
        super.viewDidLoad()


        // Do any additional setup after loading the view.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }

    @IBOutlet weak var noteTextBox: UITextView!

    override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
    {

   self.noteTextBox.resignFirstResponder()




    }





        func textFieldDidBeginEditing(textField: UITextField) {
            animateViewMoving(true,moveValue: 100)
        }
        func textFieldDidEndEditing(textField: UITextField) {
            animateViewMoving(false,moveValue: 100)
        }

    func animateViewMoving (up:Bool, moveValue :CGFloat){
        var movementDuration:NSTimeInterval = 0.3
        var movement:CGFloat = ( up ? -moveValue : moveValue)
        UIView.beginAnimations( "animateView", context: nil)
        UIView.setAnimationBeginsFromCurrentState(true)
        UIView.setAnimationDuration(movementDuration )
        self.view.frame = CGRectOffset(self.view.frame, 0,  movement)
        UIView.commitAnimations()
    }






}

我使用的是 Swift IOS 8

【问题讨论】:

  • 您发布的代码没有任何意义。请发布更多内容或考虑使用完成相同任务的众多第三方工具之一。
  • 我不知道我是怎么做这件事的,所以我想知道怎么做,如果你有任何第三方工具给我,谢谢
  • 您的问题实在太大,无法简单回答。考虑使用(或构建)第三方解决方案,例如 Slack (download here) 的创建者提供的解决方案。
  • 感谢您的回答,我不知道您是否觉得我的问题不好?我不知道为什么这里的人投票给我的问题很糟糕! .

标签: ios iphone swift


【解决方案1】:

您似乎要问几件事,(我猜,所有这些都已经在 Stack Overflow 上得到了答案),但我会尽力给您举几个例子。

首先,当您点击视图时,您目前所拥有的似乎隐藏了键盘。这可能会部分违背您的目的。

其次,如果您尝试滚动到 noteTextBox 的顶部,请尝试使用: noteTextBox.setContentOffset(CGPointMake(0, 0), animated: true)
[如果您想要滚动动画,请使用 animted: true。你可能不会,我不知道]

第三,查看这个问题来调整UITextView的大小:Click Here

第四,查看这个问题以返回 UIView 上的“记忆”位置:Click Here

祝你好运,
凯尔

【讨论】:

  • 谢谢你,我现在会检查并尝试,如果你有任何 cocopods 库做这件事,请放在这里
  • 我没有 CocoaPods 库,但是代码应该很容易实现。我建议将您的问题分解成更小的块,例如“如何滚动到 UITextView 的顶部?”或“如何调整 UITextView 的大小?”。这将使您更容易找到这些问题的答案。
【解决方案2】:

对于任何需要 Swift 语言的答案的人来说,答案只是如下简单的改变。

import UIKit

class AddEditClassNoteViewController: UIViewController {

    var keyboardShowing = false
    @IBOutlet weak var noteTextBox: UITextView!


    override func viewDidLoad() {
        super.viewDidLoad()
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardShow:", name: UIKeyboardWillShowNotification, object: nil)
        NSNotificationCenter.defaultCenter().addObserver(self, selector: "keyboardHide:", name: UIKeyboardWillHideNotification, object: nil)


        // Do any additional setup after loading the view.
    }
    override func shouldAutorotate() -> Bool {
        return !self.keyboardShowing
    }

    // much simpler than in iOS 7; a lot of the touchy bugs are gone in iOS 8
    // as long as you play your part (adjust content offset),
    // iOS 8 will play its part (scroll cursor to visible)
    // and we don't have to animate




    func keyboardShow(n:NSNotification) {
        self.keyboardShowing = true

        let d = n.userInfo!
        var r = (d[UIKeyboardFrameEndUserInfoKey] as NSValue).CGRectValue()
        r = self.noteTextBox.convertRect(r, fromView:nil)
        self.noteTextBox.contentInset.bottom = r.size.height
        self.noteTextBox.scrollIndicatorInsets.bottom = r.size.height
    }

    func keyboardHide(n:NSNotification) {
        self.keyboardShowing = false
        self.noteTextBox.contentInset = UIEdgeInsetsZero
        self.noteTextBox.scrollIndicatorInsets = UIEdgeInsetsZero
    }

    func doDone(sender:AnyObject) {
        self.view.endEditing(false)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


    deinit {
        NSNotificationCenter.defaultCenter().removeObserver(self)
    }


    override func touchesBegan(touches: NSSet, withEvent event: UIEvent)
    {

   self.noteTextBox.resignFirstResponder()




    }







}

感谢所有试图帮助我的人。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-18
    • 2014-09-25
    • 2013-10-09
    • 2014-01-10
    • 2014-03-30
    • 2010-09-08
    • 1970-01-01
    相关资源
    最近更新 更多