2017-06-01 113 views
0

我已经看到其他主题与UITextView委托处理,但似乎无法找到我的问题来自哪里。 这是我的代码,但是当我修改UITextView时,没有任何反应,并且textViewDidBeginEditing未被调用。UItextView委托swift - textViewDidBeginEditing不叫

import UIKit 
var textView1 = UITextView() 

class ViewController: UIViewController, UITextViewDelegate { 
    override func viewDidLoad() { 
     super.viewDidLoad() 

     textView1.delegate = self 
     textView1 = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290)) 
     textView1.textColor = UIColor.black 
     textView1.backgroundColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.00) 
     textView1.text = "textView 1" 
     view.addSubview(textView1) 
    } 

    func textViewDidBeginEditing(_ textView: UITextView) { 
     print("print1") 
    } 

    func textViewDidEndEditing(_ textView: UITextView) { 
     print("print2") 
    } 
} 

我试过用UITextField,但没有改变,委托函数仍然没有调用。

+0

为什么你创建,然后扔掉第一'UITextView'实例? – rmaddy

+0

为什么'textView1'在类之外声明?这不是你应该做的。 – rmaddy

回答

0

您正在设置一个来自零对象的值,您必须初始化它,然后才能设置目标代理。

+1

我试过了,仍然没有工作:/ – VH24

+0

也许是因为你正在初始化两次。 – Gabs

+0

我在哪里第二次初始化?我试图只保留 让textView1 = UITextView的(帧:的CGRect(X:24,Y:100,宽度:340,高度:290)) 但它是相同的。 – VH24

2

只需将您的textView1.delegate = self两行下移即可。您正在为UITextField设置代理,但在下一行中您将创建没有任何代理的新对象;)

+0

没有任何改变:/ – VH24

1

enter image description here

请改变textView1.delegate = self位置与下一行。

+0

我改变我的代码,然后运行应用程序。我改变textView1的文本,但没有什么打印在输出区域.. 这当然是一件容易的事,但我真的坚持这个问题.. – VH24

+0

1)张贴实际的代码,而不是图片。图片无法被引用或搜索。 2)这个答案如何在另一个方面有所改进,以前的答案已经表明'textView1.delegate = self'行需要被移动? – rmaddy

0

请使用此代码尝试

进口的UIKit

类的ViewController:UIViewController中,UITextViewDelegate {

var textView1 = UITextView() 
override func viewDidLoad() { 
    super.viewDidLoad() 
    textView1 = UITextView(frame: CGRect(x:24,y: 100,width: 340,height: 290)) 
    textView1.delegate = self 

    textView1.textColor = UIColor.black 
    textView1.backgroundColor = UIColor(red: 0.00, green: 0.00, blue: 0.00, alpha: 0.00) 
    textView1.text = "textView 1" 
    view.addSubview(textView1) 
} 

func textViewDidBeginEditing(_ textView: UITextView) { 
    print("print1") 
} 

func textViewDidEndEditing(_ textView: UITextView) { 
    print("print2") 
} 

}

+0

“请尝试”不是一个有用的描述。清楚地解释什么是错的,以及你的答案如何解决这个问题。 – rmaddy

+0

问题解决后重新启动我的电脑和更改textView1.delegate =自我与第二个下一行的位置。 xcode也可能存在一个问题,像重启后解决的错误。谢谢 ! – VH24