2013-03-19 35 views
0

我正在關注在UIView(子類)圖層的屏幕上繪製這個優秀的小教程。 http://spritebandits.wordpress.com/ 它只是工作。用手指在UITableView中畫圖

只有一件事。我把這個視圖作爲一個UITableViewCell的子視圖,這當然是作爲UITableView的一部分顯示的。 我想我會有同樣的問題,當我把它放在一個UIScrollView。 (UITableView繼承自UIScrollView)

只要相關的移動是水平的,我的繪畫視圖就會觸發觸摸。只要我將手指移動到垂直位置,即使是部分移動,UITableView也會接管並滾動表格。

是否有任何適當的方法來阻止表控制觸摸,而觸摸實際上在我的視野內?

如果它很重要:我正在使用故事板。該單元格是一個具有自己的UITableViewCell子類的原型單元格。

回答

0

我沒有這個答案。但基本上有一個解決方法。

你可以讓用戶在成繪製模式,其中對於一個UITableViewCell滾動被禁用,然後

一旦用戶與繪圖完成後,你可能會再次啓用滾動。

將按鈕包含在屏幕上的任何位置都可以幫助您切換模式。

+0

謝謝。技術上可以工作。但是,這是一個很好的用戶體驗嗎?無論如何。我可以嘗試禁用滾動,而用戶實際繪製的東西。但是,當用戶開始在垂直方向上繪圖時,這不起作用。 – 2013-03-19 21:53:58

1

我已經實現了這個使用相同的類「畫布」你說的也是在一個UITableViewCell。但是我沒有使用整個單元進行繪製,只有UITableView內的UIView作爲子視圖。

當UIView(允許繪製的單元格的子視圖)觸發touchesBegan或touchesEnded時,我通過激活和停用UITableView滾動來實現整個用戶體驗。所以當他們觸摸/移動UIView內,他們正在繪製。當它在外面時,它們正在滾動。所以他們不能在UIView上滾動,因爲它們將被繪製。

你的情況的問題是,由於整個單元格是用於繪製的視圖,所以用戶不能在這個具體單元格中滾動,因爲它是繪圖的一個。

希望這會有所幫助。

+0

我的畫布子視圖也只是該單元的一部分。單元格中還有其他的標籤和按鈕。 Canvas視圖的所有側面都有足夠的空間供用戶拖動滾動表格。我也嘗試過相同的技巧。我觸發touchesBegan被解僱。只有在用戶側身移動時纔會觸發。我不會注意到帶有上下組件的任何移動。你有沒有使用一個技巧來解決這個問題? – 2013-03-20 08:17:52

+0

呃..有一件事,如果你點擊畫布,然後上下移動手指它滾動或繪圖? (慢慢嘗試,首先點擊畫布上的按鈕,然後向上或向下滑動一下) – 2013-03-20 20:42:14

+0

我剛試過。在touchesBegan我首先爬上超視圖鏈,直到我找到一個UITableView並將scrollEnabled設置爲NO。同樣在touchesEnded:與YES。所以,當用戶開始垂直繪圖時,它可以正常工作。用戶可以改變方向並繼續繪製。而當用戶在實際移動手指之前開始繪畫但等待片刻之後,它也可以正常工作。但是當用戶開始水平或對角線左右時,桌面會滾動。 – 2013-03-20 22:01:07