UITextViewに入る(ユーザーがタップして編集する)とき、ビューを離れる(ユーザーがタップして離れる)ときに、どのようにコードを呼び出すことができますか?
どんな助けにも感謝します。
ここでは、調査するためのいくつかの便利な方法を見つけることができます。
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の例
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")
}
}
ITextViewDidChangeデリゲートメソッドを実装することもできます。アプリで以下のコードを使用して簡単なメモをとっています。ユーザーが文字を入力すると、オブザーバーは通知センターからこれをキャッチし、saveTextメソッドを呼び出します。
方法は次のとおりです。
この行をviewDidLoadメソッドに追加します。
[NSNotificationCenter.defaultCenter addObserver:self selector:@selector(textViewDidChange:) name:UITextViewTextDidChangeNotification object:nil];
コード内の適切な場所にあるこれらの行(テキストビューのデリゲートメソッドを処理するセクションなど)ヒント:これにはプラグママークを使用してください(#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
}
デリゲートを使用し、以下を使用します。
- (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;
};