如何使UITextView调用addTarget方法

时间:2013-07-05 23:04:06

标签: ios uitextview

如何将方法addTarget与UITextView一起使用?我知道您可以将它与UITextField一起使用,但我不能将它与UITextView一起使用。我甚至无法使用UITextView创建一个动作。有没有办法做到这一点?提前谢谢。

3 个答案:

答案 0 :(得分:11)

根据评论中的信息,您要做的是在用户输入UITextView时更新本地变量。

所以尝试这样的事情(我假设你有一个UIViewController子类,它的视图将问题中的UITextView作为子视图):

在视图控制器中,如果使用IB,则为IBOutlet创建UITextView,否则只创建常规参考。然后是要将文本存储到的NSString变量的另一个属性。

注意:确保此视图控制器符合UITextViewDelegate协议,如下所示。

@interface BBViewController () <UITextViewDelegate> //Note the protocol here

@property (weak, nonatomic) IBOutlet UITextView *textView;
@property (strong, nonatomic) NSString *userInput;

@end

然后,挂钩文本视图的委托:(或在IB中执行此操作)

- (void)viewDidLoad
{
    [super viewDidLoad];

    self.textView.delegate = self;
}

然后,当用户与该文本视图中的文本进行交互时,它将发送正确的委托方法,您可以适当地更新您的变量。

#pragma mark - UITextViewDelegate

- (void)textViewDidChange:(UITextView *)textView {

    self.userInput = textView.text;
    NSLog(@"userInput %@", self.userInput); //Just an example to show the variable updating
}

答案 1 :(得分:1)

用于swift版本3 +

  1. UITextViewDelegate添加到您的班级
  2. 将委托添加到您的textview,如下所示:
    self.mytextview.delegate = self
  3. 添加此方法:

    func textViewDidChange(_ textView: UITextView){ 
        print("entered text:\(textView.text)")    
    }
    

答案 2 :(得分:0)

您可以使用通知来实现所需的功能。

//Listen to notifications :

NotificationCenter.default.addObserver(textView,
            selector: #selector(textDidChange),
            name: NSNotification.Name.UITextViewTextDidChange,
            object: nil)

//the function called when changed

    @objc private func textDidChange() {
        ...
    }

//make sure to release to observer as well
            NotificationCenter.default.removeObserver(textView,
            name: NSNotification.Name.UITextViewTextDidChange,
            object: nil)