Обнаружение запуска и остановки редактирования UITextView
Как я могу вызвать некоторый код при входе в UITextView (пользователь нажимает, чтобы отредактировать его) и выходе из представления (пользователь нажимает, чтобы оставить его)?
Ценю любую помощь.
3 ответа:
Здесь вы можете найти несколько полезных методов для исследования:
textViewDidBeginEditing:
textViewDidEndEditing:
Более того, чтобы жить
UITextView
Вам часто приходится осуществлять действие, которое вызывает[yourTextView resignFirstResponder];
Пример Objective-C
//you may specify UITextViewDelegate protocol in .h file interface, but it's better not to expose it if not necessary @interface ExampleViewController()<UITextViewDelegate> @end @implementation ExampleViewController - (void)viewDidLoad { [super viewDidLoad]; //assuming _textView is already instantiated and added to its superview _textView.delegate = self; } //it's nice to separate delegate methods with pragmas but it's up to your local code style policy #pragma mark UITextViewDelegate - (void)textViewDidBeginEditing:(UITextView *)textView { //handle user taps text view to type text } - (void)textViewDidEndEditing:(UITextView *)textView { //handle text editing finished } @end
Swift Example
class TextViewEventsViewController: UIViewController, UITextViewDelegate { @IBOutlet weak var exampleTextView: UITextView! override func viewDidLoad() { super.viewDidLoad() self.exampleTextView.delegate = self } func textViewDidBeginEditing(_ textView: UITextView) { print("exampleTextView: BEGIN EDIT") } func textViewDidEndEditing(_ textView: UITextView) { print("exampleTextView: END EDIT") } }
Можно также реализовать методы делегирования UITextViewDidChange. Я использую приведенный ниже код в своем приложении для быстрого создания заметок. Всякий раз, когда пользователь вводит символ, наблюдатель ловит его из центра уведомлений и вызывает метод saveText.
Вот как:
Добавьте эту строку в метод viewDidLoad :
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil];
И эти строки в соответствующем месте кода (например, в разделе, который обрабатывает делегат представления текста методы. Совет: используйте для этого метки pragma (#pragma mark-методы делегата TextView):
- (void)textViewDidChange:(UITextView *)textView{ NSLog(@"textViewShouldEndEditing"); // Detect in log output if the method gets called [self saveText:nil]; // Call any method you like }