Как я могу вызвать код при вводе UITextView (пользовательские краны для его редактирования) и оставить представление (пользовательские отступы оставить его)?
Оцените любую помощь.
Как я могу вызвать код при вводе UITextView (пользовательские краны для его редактирования) и оставить представление (пользовательские отступы оставить его)?
Оцените любую помощь.
Здесь вы можете найти несколько полезных методов для исследования:
textViewDidBeginEditing:
textViewDidEndEditing:
Кроме того, чтобы жить UITextView
, вы часто должны выполнять действие, которое вызывает [yourTextView resignFirstResponder];
UPD: краткий пример
//you may specify UITextViewDelegate protocol in .h file interface, but it 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 nice to separate delegate methods with pragmas but it 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
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 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
}
используйте делегат и используйте:
- (void) textViewDidBeginEditing:(UITextView *) textView {
// Your code here
}