[英]IOS: hide keyboard on touch UITableView
我是iOS開發的新手。 我想在UITextView外部點擊時隱藏鍵盤。 我的TextView在UITableView的單元格中。 問題是我的頂部有一個工具欄,我的按鈕不再起作用。 我實現了方法“ shouldReceiveTouch”,但我認為測試不正確。 有任何想法嗎? 謝謝,抱歉我的英語不好。
在我的ViewDidLoad中:
tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
tap.delegate = self;
[self.view addGestureRecognizer:tap];
注意:tap是UITapGestureRecognizer屬性。
實現的方法:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIBarButtonItem class]]) {
return NO;
}
return YES;
}
-(void)dismissKeyboard {
[tview resignFirstResponder];
}
UIBarButtonItem不是UIView的子類,因此shouldReceiveTouch仍返回YES。
在初始化cellForRowAtIndexPath中的單元格時,請嘗試排除整個UIToolbar或僅在UITableViewCell中添加輕擊手勢識別器。
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UIToolbar class]]) {
return NO;
}
return YES;
}
使用UIScrollView委托的didScroll方法來退出鍵盤。TableView也是UIScrollView的子類,因此它應該可以工作。
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[tview resignFirstResponder];
}
或使用這個
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
[tview resignFirstResponder];
}
如果仍然要使用手勢,則將手勢添加到tableView的UIView或self.view或superView中,而不是將其添加到tableView中
嘗試以下代碼:----
保持原樣並添加此方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[tview resignFirstResponder];
}
您應該將手勢添加到表格視圖中。
tap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)];
tap.delegate = self;
[tblView addGestureRecognizer:tap];
在viewDidLoad中設置self.view.userInteractionEnabled = yes;
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
if ([touch view] == tview) {
[tview resignFirstResponder];
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.