我将如何将方法 addTarget 与 UITextView 一起使用?我知道你可以将它与 UITextField 一起使用,但我不能将它与 UITextView 一起使用。我什至无法使用 UITextView 创建动作。有没有办法做到这一点?提前致谢。
user2273191
问问题
12253 次
3 回答
15
根据评论中的信息,您要做的是在用户键入UITextView
.
所以尝试这样的事情(我假设你有一个 UIViewController 子类,它的视图有问题中的 UITextView 作为子视图):
IBOutlet
在您的视图控制器中,如果使用 IB,则创建一个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
}
于 2013-07-07T03:14:38.783 回答
9
对于 swift 版本 3+
- 添加
UITextViewDelegate
到你的班级 - 像这样将委托添加到您的文本视图:
self.mytextview.delegate = self
添加此方法:
func textViewDidChange(_ textView: UITextView){ print("entered text:\(textView.text)") }
于 2018-02-23T12:48:06.317 回答
1
您可以使用通知实现您想要的。
//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)
于 2018-08-11T08:33:30.647 回答