0

にカスタムセルを使用するという問題があります。UITableView複数の指 (2 本の指以上) をタップするtableviewと、各セル (情報を表示するため) の一部に多くの問題があり、labelsテキストが失われます (空です)。そのため、テーブルでマルチタッチを無効にしようとしましたが、影響はありません。tableView.allowsMultipleSelection = NO;またはtableView.multipleTouchEnabled = NO;に追加しようとしてcellForRowAtIndexPath or didSelectRowAtIndexPathいます。しかし、何も機能しません。解決策を見つけるのを手伝ってください。

ありがとうございました!これが私のコードです:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    int row = indexPath.row;

@synchronized (self) {
    if (row == [voicemailItems count]) {
        // User selected the blank rows
        [tableView deselectRowAtIndexPath:indexPath animated:YES];

        // Blank out the play button on previous selected row
        [self deselect];

        return;
    }
}

if (selectedRowIndexPath != nil) {
    if (row == selectedRowIndexPath.row) {
        // Selecting the same row twice will play the voicemail
        if (streaming == NO) {
            if (calling == NO) {
                // Play the voicemail
                [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(playVoicemailAction:) userInfo:indexPath repeats:NO];
            }

            return;
        }
        else {
            // Streaming VM
            if ([self isCallInProgress] == YES) {
                [ScreenUtils errorAllert:@"Cannot play voicemail while call is in progress." type:kUINotice delegate:self];
            }
            else {
                if (![self isVoicemailNotification:selectedRowIndexPath.row]) {
                    // Stream the voicemail
                    [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(playVoicemailAction:) userInfo:indexPath repeats:NO];
                }
            }
        }
    }
    else {
        // Selecting a different row
        [self shutdownPlayer];
        [self cancel];

        // Blank out the play button on previous selected row
        [self deselect];
    }
}

selectedRowIndexPath = indexPath;

// Enable Call Back button 
// Don't enable if private, etc.
btnCallBack.enabled = ([self canCallBack:row] &&
                       !calling &&
                       ([self isCallInProgress] == NO) &&
                       ![self isVoicemailNotification:selectedRowIndexPath.row]);

// Enable and Delete button
btnDelete.enabled = YES;

// Select the cell
VoicemailCell * cell = (VoicemailCell*)[tblView cellForRowAtIndexPath:indexPath];
[cell select:YES playing:[self isPlaying] stream:streaming];
[tblView setNeedsDisplay];

//[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
4

3 に答える 3

3

これを試してください、それは私を助けます!

cell.contentView.exclusiveTouch = YES;
cell.exclusiveTouch = YES;
于 2014-11-07T10:25:47.377 に答える
1

何度も試した結果、didSelectRowAtIndexPath の最後に次のコードを追加する必要があることがわかりました。

[tableView deselectRowAtIndexPath:indexPath animated:YES];
于 2013-09-17T08:41:54.543 に答える