2011-04-23 63 views
0

我決定不再使用UIPickerView ......它在功能,設計和尺寸(高度)方面完全不靈活。它偶爾也會卡在行之間,並且在放開輪子和委託方法被觸發之間發生的延遲表明已經選擇了新行(因爲「穩定」動畫)導致了很多問題。我一直在努力的應用程序的上下文。關於如何從頭開始創建UIPickerView的任何想法?

這就是說,UIPickerView的用戶友好的方面是好的,我想嘗試複製它。我試圖研究這可能會做的不同方式,但沒有太大的成功。有沒有人有任何想法,以涉及從頭開始類似的事情?

我試圖讓一個UITableView子類以這樣的方式行事:當前任何單元格在表格中間(它會在拖動時發生變化等)將其背景顏色更改爲不同的暗示它被「選中」。只要表格被拖動,使得「選定」單元不再處於中間,則單元將恢復正常,並且新的中間單元會改變顏色。所以這就像UIPickerView一樣,你不必點擊一個單元格;相反,您只需拖動以默認選中一個。

我覺得應該很容易截取UITableView的「touchesMoved」方法,並添加一些循環遍歷表中所有當前可見單元的代碼,檢查它們的框架是否與表的中心點重疊,並相應地改變其外觀(並根據需要向其他類發送通知以指示「選擇」改變)。不幸的是,我不能得到這個工作,因爲當我拖動表格時,「touchesMoved」方法不會被調用。我錯過了明顯的東西嗎?

在這一點上,任何想法或建議都將非常讚賞......我製作了一個嚴重依賴UIPickerView對象的應用程序,並且由於我遇到的問題,我必須放棄它除非我能想出一個辦法來完成這項工作。

非常感謝,

克里斯

回答

4

請記住,一個UITableView是一個UIScrollView的子類,而得到的UITableViewDelegate所有UIScrollViewDelegate方法調用了。聽起來好像很容易就能知道表格視圖何時滾動。

至於查找哪一行在視圖的中間,只需使用indexPathForRowAtPoint:

+0

這正是我所期待的。有了這兩種方法,這將比我原先做出來的要簡單得多......感謝您的幫助......非常感謝! – 2011-04-24 01:19:12

+0

果然,你的建議效果很好。現在我已經有了一些或多或少的設置(包括在新單元格移動到表格中心時觸發的委託方法),但是我的自定義UITableView仍然缺少UIPickerView的一個基本方面,那就是如果你選擇頂部或底部的行,它們應該在表格中垂直居中(即使這意味着佔用表格的空白空間)。我已經看過UIScrollView和UITableView的文檔,但沒有運氣。任何想法,如果這是相對容易做到的? – 2011-04-24 06:26:13

+0

@chrisb:嘗試爲'contentInset'設置合適的頂部和底部插入符 – Anomie 2011-04-24 13:12:32

相關問題