私はcustom UIView
から提示されたを持っていUIViewController
ます。このビューコントローラは、そのようないくつかのビューの1つを表示できます。これらのビューの1つに。がありUITextView
ます。にテキストを入力し始めるとUITextView
、キーボードが表示されます。ただし、ユーザーがテキストビューの外側をタップするたびにキーボードを閉じたいと思います。UIViews
特定の条件に基づいてUIViewControllerによって複数を提示できるため、UITextView
デリゲートメソッドなどをにカプセル化しました。これは、同様custom UIView
の内部からの通知を使用して行いました。custom UIView
- (void)configureView
{
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self selector:@selector(keyboardWillShow:) name:
UIKeyboardWillShowNotification object:nil];
[nc addObserver:self selector:@selector(keyboardWillHide:) name:
UIKeyboardWillHideNotification object:nil];
self.tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self
action:@selector(didTapAnywhere:)];
}
-(void) keyboardWillShow:(NSNotification *) note {
[self addGestureRecognizer:self.tapRecognizer];
}
-(void) keyboardWillHide:(NSNotification *) note
{
[self removeGestureRecognizer:self.tapRecognizer];
}
-(void)didTapAnywhere: (UITapGestureRecognizer*) recognizer {
[self.detailsTextView resignFirstResponder];
}
ただし、didTapAnywhereが呼び出された場合、resignfirstresponderが接続されていても、キーボードは閉じられません。参考までに、の代理人はUITextView
ですcustom UIView
。
これを行う方法で助けてください