簡體   English   中英

從UITextField中的UITextField中刪除Tap手勢

[英]Remove Tap gesture from UITextField inside a UITableViewCell

基本上我想要實現的是在自定義UITableViewCell中有一個UITextField,而這個文本字段應該只在長按時觸發。 因此,如果用戶只在文本字段上點擊一次,則單元格應該觸發其委托方法didSelectRow。

到目前為止,我在文本字段上添加了一個長按,並刪除了所有其他手勢。 因此,當我長按它時,我的文本字段正確觸發。 但問題是,當我只是點擊文本字段時,單元格不會被觸發,並且不會調用didSelectRow方法。 如果我在文本字段之外點擊,則該方法被正確地稱為ofc。

這是我的代碼:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"CustomCell";

    CustomCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    if (cell == nil) {
        cell = [[CustomCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
    }

    cell.nameTextField.gestureRecognizers = nil;

    UILongPressGestureRecognizer *longPressTextField = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleCellTextFieldLongPress:)];
    [cell.nameTextField addGestureRecognizer:longPressTextField];

    return cell;
}

我用UIGestureRecognizerDelegate嘗試了不同的東西,但似乎都沒有用:(。

任何想法贊賞! 謝謝 !

你應該能夠通過在細胞本身上放置激活劑來實現這一目標。 因為您的UITextField仍在接受用戶輸入,所以它將阻止底層單元接收觸摸。

你可以通過將UILongPressGestureRecognizer添加到CustomCell對象並設置來解決這個問題:

cell.nameTextField.userInteractionEnabled = NO;

我終於找到了一個有效的解決方案。

我在UITextField的頂部添加了透明視圖,並在此視圖中添加了長按識別器。 通過這種方式,點擊手勢“透過”透明視圖,我的單元格被正確選擇:-)

不管怎樣,謝謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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