2011-05-16 16 views
0

我正在開發一個應用程序,其中我使用的屏幕之一有tableview,它是tableview控制器。我已經寫了自定義的touchesBegan,touchesmoved,touchesended方法insside一個的tableview控制器類,當任一單元格的touchesBegan方法有史以來用戶按下呼喚和withing這個檢測長按我所做的就是willSelectRowAtIndexPath,didSelectRowAtIndexPath在iPhone中使用觸摸開始方法和執行選擇器時不會調用

[self performSelector:@selector(longTap) withObject:nil afterDelay:1.0]; 

如果用戶刪除他的手指在1秒之前,在touchesmovedtouchesended方法我取消performselector

現在發生什麼事情是當我按&保持1分鐘longTap方法正在呼叫和willSelectRowAtIndexPath,didselectRowAtIndexPath不呼叫。但是我需要在對longTap方法執行任何操作之前獲取indexpath.row值。
任何人都可以幫助我解決這個問題。請分享您的寶貴建議。

在此先感謝。

回答

0

您應該考慮使用手勢識別器,如UILongPressGestureRecognizer。擺弄觸摸事件本身很難且容易出錯。

打破UIKit類依賴於函數的事件流很容易。手勢識別器是用於連接觸摸事件流的公共API,簡單易用,不會破壞UIKit功能。

+0

謝謝你的回覆Peylow,絕對我會嘗試這個,我想通過另一種方式。我所做的是在接觸開始方法給予執行選擇器後延遲(1.0)秒,並在按住1秒後調用longTap方法,在longTap方法內我有一個布爾變量設置爲YES並且在該方法中不執行任何操作,然後立即選擇了tableiview的方法,在此我調用了bool變量並執行了所需的操作。之前的阻塞元素是UIAlertview。 – 2011-05-16 12:05:03

相關問題