2011-03-02 78 views
1

想象一下當你有UITableView置入UIScrollView的情況。 如果點擊上表視圖,並開始垂直移動 - 的UITableView成爲第一個響應者,將垂直滾動。但是,如果你將水平移動手指 - UIScrollView成爲第一響應者,並將水平滾動。UIView帶走第一響應者狀態

我也有類似的情況,但不是我的UIScrollView有簡單的UIView對象,攔截 - (無效)touchesMoved:事件,使移動(有點自制的滾動型)。

但我怎麼可以做同樣的伎倆,的UIScrollView做 - 確定水平移動和採取從的UITableView離開第一個響應狀態 ???

在此先感謝!

+0

它可能不是UIScrollView的「帶走」第一響應者從UITableView中。相反,這可能是UITableView對滑動不感興趣並將其「傳遞」給響應者鏈的訣竅。你爲什麼不嘗試在表格中啓用滑動刪除操作,並在這種情況下查看是否有水平滾動。 – Bogatyr 2011-03-02 18:08:11

+0

好吧,我明白這個想法,明天就試試看,然後寫回來。謝謝 – Dmitry 2011-03-02 21:14:50

+0

nope。在刪除表後,第一個響應者狀態丟失了某處,我想。無論如何,UIView在UITableView移除後不會獲得第一個響應者狀態。有任何想法嗎??? – Dmitry 2011-03-03 11:01:44

回答

0

你可以嘗試在您看來覆蓋canBecomeFirstResponder並在適當的時候返回相應的值。

+0

什麼時候會調用這些方法?我只是試圖把它放在我的UIView(自制滾動視圖),它不是在所有叫.. – Dmitry 2011-03-02 17:46:44

+0

也,據我所知,canBecomeFirstResponder應一次開始叫,但我需要一個時間來確定水平或垂直移動 – Dmitry 2011-03-02 17:47:39

0

您是否嘗試過在視圖上扔UIPanGestureRecodnizer。然後,您應該能夠設置一個@選擇器,它將允許您處理相關事件。此外,您可以選擇僅更改x元素並單獨保留y元素。更進一步,將泛元素附加到視圖上,您​​不必擔心有第一響應者。如果您有加速和減速,泛元素可以將很多時間用作滑動元素。除此之外,我想說,你還可以添加留下了UISwipeGestureRecognizer元素和正確的,但我不認爲你得到的信息,如多遠用戶刷卡的意思,如果你想在屏幕上彈回,當用戶還沒有使它遠遠不夠,那麼你就沒有這個選擇。另外,如果你做了一些額外的編碼,刷卡不會產生與UIScrollView相同的效果,但UIPanGestureRecognizer可以。額外的編碼將觀察x值的位置,然後在用戶放開視圖時使用視圖的一點點動畫捕捉到右側或左側。除此之外,如果您正確設置了x,則該視圖應當並且將遵循手指。