Comment puis-je appeler du code en entrant dans UITextView (l'utilisateur appuie pour le modifier) et quitte la vue (l'utilisateur appuie pour le quitter)?
Appréciez toute aide.
Vous trouverez ici plusieurs méthodes utiles pour enquêter:
textViewDidBeginEditing:
textViewDidEndEditing:
De plus, pour vivre UITextView
, vous devez souvent implémenter une action qui appelle [yourTextView resignFirstResponder];
Exemple 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
Exemple rapide
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")
}
}
Vous pouvez également implémenter les méthodes de délégué ITextViewDidChange. J'utilise le code ci-dessous dans mon application pour prendre des notes rapides. Chaque fois que l'utilisateur a entré un caractère, l'observateur l'attrape dans le centre de notification et appelle la méthode saveText.
Voici comment:
Ajoutez cette ligne à la méthode viewDidLoad:
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil];
et ces lignes à l'endroit approprié dans votre code (comme dans la section qui gère les méthodes déléguées de la vue texte. CONSEIL: Utilisez des marques pragma pour cela (# marque pragma - Méthodes déléguées TextView):
- (void)textViewDidChange:(UITextView *)textView{
NSLog(@"textViewShouldEndEditing"); // Detect in log output if the method gets called
[self saveText:nil]; // Call any method you like
}
utilisez le délégué et utilisez:
- (void) textViewDidBeginEditing:(UITextView *) textView {
// Your code here
}
txtviewaddress.text="Address"
txtViewAddress.TextColor = UIColor.LightGray;
txtViewAddress.ShouldBeginEditing += (textView) =>
{
txtViewAddress.Text = "";
txtViewAddress.TextColor = UIColor.Black;
return true;
};
txtViewAddress.ShouldEndEditing += (textView) =>
{
if (textView.Text == "")
{
txtViewAddress.Text = " Address";
txtViewAddress.TextColor = UIColor.LightGray;
}
return true;
};