2012年8月27日 星期一

解除被封印的登天神功

在iOS App的國度裡,幾乎所有的App都與生俱來擁有一點登天的神功,尤其是在表格頁面,更可以體會Apple貼心的一點登天設計。以Facebook App為例,由於彼得潘的好友眾多,總在不知不覺間就一路捲動到十萬八千里,想要回到起點,若是無登天神功,手指可能就得滑到抽筋了。經由登天神功,我們只要點選畫面最上方的status bar (時間,電量 ),即可回到最初。



登天神功背後的原理很簡單。iOS裡可以垂直捲動的物件,都有著登天神功。所以當我們點選status bar時,它們將瞬間返回起點,不敢稍作停留。

然而,世事豈能竟如人意。當畫面上只有table view時,點選status bar自動返回表格的開頭是天經地義。但當畫面上同時有table view和text view時,兩個同樣精通垂直捲動的強者相爭。此時可不是兩虎相爭,必有一傷,而是兩敗俱傷。此時點選status bar,畫面將如同定格般毫無回應,因為公正的系統無法決定該讓誰登天,該讓誰返回原點。如下圖所示,畫面上的表格(table view) 有2個cell,第一個cell是鋼琴小王子V.K克的照片,第二個cell是粉絲想對V.K克說的話( text view)。當我們將表格往下滑動,輸入感性留言後,點選status bar時,登天神功有如被封印般,不再作用了。








就像情人節只能和一個人過,畫面上只有一個物件能夠登天。想要讓table view登天,其實很簡單,只要將其它相爭敵人的scrollsToTop屬性設為NO即可。

textView.scrollsToTop = NO;

說明:
scrollsToTop為UIScrollView的property,當它設為YES時,即表示此物件能夠登天,這也是為何繼承自UIScrollView的UITableView,UITextView能夠登天的原因。當我們將scrollsToTop設為NO,即廢了其登天神功。唯有當畫面上只有一個物件的scrollsToTop為YES時,系統才能毫不猶豫地選出登天的對象。




再一次地點選status bar,登天神功再度發威,我們終於看到V.K克彈琴的認真神情了! 










沒有留言:

張貼留言