iphone - fields - text field ios 11
Detectar iniciar y detener ediciĆ³n UITextView (3)
¿Cómo puedo llamar a algún código al ingresar un UITextView (los toques del usuario para editarlo) y dejar la vista (el toque del usuario para dejarlo)?
Aprecio cualquier ayuda.
También puede implementar los métodos de delegado UITextViewDidChange . Uso el código de abajo en mi aplicación para tomar notas rápidas. Cuando el usuario ha ingresado un carácter, el observador lo captura desde el centro de notificaciones y llama al método saveText .
Así es cómo:
Agregue esta línea al método viewDidLoad :
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil];
y estas líneas en el lugar apropiado en su código (como en la sección que maneja los métodos de delegado de la vista de texto. CONSEJO: Use marcas Pragma para esto ( #pragma mark - TextView Delegate Methods ):
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"textViewShouldEndEditing"); // Detect in log output if the method gets called
[self saveText:nil]; // Call any method you like
}
usar el delegado y usar:
- (void) textViewDidBeginEditing:(UITextView *) textView {
// Your code here
}
Aquí puedes encontrar varios métodos útiles para investigar:
textViewDidBeginEditing:
-
textViewDidEndEditing:
Además, para ver el UITextView
vivo, a menudo se debe implementar una acción que llame a [yourTextView resignFirstResponder];
Ejemplo de 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
Ejemplo de 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")
}
}