簡體   English   中英

iOS:在觸摸式UITableView上隱藏鍵盤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM