2012-11-30 76 views
0

工作,我有我的視圖控制器的viewDidLoad方法初始化爲低於長按手勢識別:UILongPressGestureRecognizer不上的UITextField

longPressGesture_= [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(displayTimeFlagCallout)]; 

我在我的ViewController一個的tableview。 tableview有自定義單元格。每個單元格有2個文本框。我想在用戶長按文本字段(startTime和endTime)時調出自定義彈出窗口。我不希望放大鏡和複製/粘貼彈出窗口顯示在長按文本字段作爲標準行爲,因此在添加我的手勢識別器之前,我正在禁用文本字段的內置長按手勢識別器。我已將以下代碼添加到我的cellforRowAtIndexPath方法中:

MyCustomCell_iPhone *cell = [tableView dequeueReusableCellWithIdentifier:cellID]; 

if (cell == nil) 
    { 
    cell = [[MyCustomCell_iPhone alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellID]; 


     for (UIGestureRecognizer *recognizer in cell.startTime.gestureRecognizers) { 
      if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){ 
       recognizer.enabled = NO; 
      } 
     } 
     for (UIGestureRecognizer *recognizer in cell.endTime.gestureRecognizers) { 
      if ([recognizer isKindOfClass:[UILongPressGestureRecognizer class]]){ 
       recognizer.enabled = NO; 
      } 
     } 

     [cell.startTime addGestureRecognizer:longPressGesture_]; 
     [cell.endTime addGestureRecognizer:longPressGesture_]; 


    } 

但是,這不起作用。長按現在什麼都沒有發生。任何想法可能是什麼問題?

感謝 Hetal

+0

你能給的答案在我的問題嗎? http://stackoverflow.com/questions/40277505/manage-long-press-on-uitextfiled-without-disabling-context-menu –

回答

0

三個想法:

  1. 不能使用相同的長按手勢識別爲兩個控件。您必須爲每個控件創建一個單獨的手勢識別器。

  2. 這樣看來,手勢識別器被重置,當你在文本字段開始編輯(假設你允許編輯的文本字段)。我假設你允許編輯文本字段,如果是這樣的話,我相信你必須設置一個代理來禁用不屬於你自己的長手勢識別器。 (你可以做到這一點,你長按手勢識別,子類作爲,說CustomLongPressGestureRecognizer,使用你的文本字段的手勢識別,然後你可以禁用任何UILongPressGestureRecognizer對象不是自己CustomLongPressGestureRecognizer

  3. 我從你沒有使用故事板和原型細胞代碼推斷,因爲在這種情況下,cell是從來沒有nil和你if聲明永遠不會結束調用你的代碼。但是如果你使用的是NIB或者不使用原型單元,那麼你應該在這一點上很好。

+0

你能回答我的問題嗎? http://stackoverflow.com/questions/40277505/manage-long-press-on-uitextfiled-without-disabling-context-menu –

相關問題