如何将方法addTarget与UITextView一起使用?我知道您可以将它与UITextField一起使用,但我不能将它与UITextView一起使用。我甚至无法使用UITextView创建一个动作。有没有办法做到这一点?提前谢谢。
答案 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 +
UITextViewDelegate
添加到您的班级self.mytextview.delegate = self
添加此方法:
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)