2013-09-16 2 views
-1

У меня есть проблема с тем, что я использую пользовательскую ячейку для UITableView, когда я нажимаю более одного пальца (2 пальца или больше) на моем tableview, у него было много проблем, некоторые из моих labels на каждая ячейка (для отображения информации) потеряла тексты (она пуста). Так что я пытаюсь отключить multi touch на моем столе, но это не влияет. Я пытаюсь добавить tableView.allowsMultipleSelection = NO; или tableView.multipleTouchEnabled = NO; в cellForRowAtIndexPath or didSelectRowAtIndexPath. Но ничего не получается. Пожалуйста, помогите мне найти решение.Невозможно отключить многократное касание на Uitable View (ios7)

Спасибо! Вот мой код:

- (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]; 
} 
+0

Можете ли вы показать код. – Fogmeister

+0

вы должны работать над причиной - не симптомы. – vikingosegundo

+2

Почему вы вызываете методы, которые влияют на tableView из методов делегата? Они должны вызываться при распределении/инициализации tableview и только один раз. – trojanfoe

ответ

1

после многих попыток, я узнаю, что мне нужно добавить код последующих в конце didSelectRowAtIndexPath:

[tableView deselectRowAtIndexPath:indexPath animated:YES]; 
1

@try это

[cell setExclusiveTouch:YES] 
+0

Я использую пользовательскую ячейку для моего табличного представления, когда я нажимаю на ячейку, она улавливает это действие, а затем отвечает, изменяя цвет текста метки , показать кнопку (я делаю это в обычном файле) ... Но когда я использую более одного пальца, чтобы очень быстро прикоснуться к табличному представлению, я думаю, что он не может измениться так быстро, как действие касания. Так что это неправильно работать, я думаю, что я должен позволить кулачному крану достаточно времени, чтобы закончить работу, прежде чем сделать действие второго нажатия. Так как это сделать? Хоп, ты понимаешь, что я имею в виду. Спасибо. – lee

+0

[cell setExclusiveTouch: YES] отключить многократное нажатие в то время на ваших камерах, вы попробовали это? – abhishekkharwar

+0

yep! Я поместил его в cellForRowAtIndexPath, но он не работает. – lee

3

Попробуйте это, это поможет мне!

cell.contentView.exclusiveTouch = YES; 
cell.exclusiveTouch = YES; 
Смежные вопросы