情況如下:
我們工程的主頁是一個很長的tableView列表,想要實現(xiàn)點擊頂部tableView自動滑至坐標(biāo)原點處,系統(tǒng)的UIScrollView已經(jīng)實現(xiàn)了這個功能,只要scrollingToTop這個屬性是YES就可以了。然而!當(dāng)這個頁面的scrollView大于1個,同時這個屬性值又都是YES(或者說同一頁面下的這一屬性值為YES的個數(shù)大于1)時,這個點擊頂部的事件就可以觸發(fā),否則不觸發(fā)(理由是系統(tǒng)不知道把哪個scrollView的位移調(diào)回原點)。
理論上講,如果scrollView.scrollingToTop的這個值的默認值是NO的話,我只需要把我需要實現(xiàn)跳轉(zhuǎn)置頂功能的scrollView實例的這一屬性設(shè)為YES就可以了, 然而坑爹的是:這個屬性的默認值就是YES!
所以鄙人打算通過runtime把這個屬性的默認值設(shè)為NO,這樣這個問題就可以迎刃而解了!以后工程主頁中在遇到相同的問題, 也可以解決了!
在這里我想補充解釋一下,為什么不手動把其他的scrollview實例的scrollingToTop這個屬性設(shè)為NO,理論上講這樣也可以實現(xiàn)同樣的效果:
因為現(xiàn)實是殘酷的,大多數(shù)工程都會是這樣一種架構(gòu),簡單舉例就是,主頁的三個TabBar關(guān)聯(lián)的三個頁面其實是捆綁在一個大的ScrollView容器中(橫向),而每一個tab的頁面中嵌套著多個小的scrollView,有一些封裝好的小視圖中的父類是scrollView,而他們的名字中并沒有體現(xiàn)出scrollView,所以基于以上種種實際情況,一個個的找出所有無關(guān)的scrollView及其子類,并把它們的那個屬性寫成no的難度要遠遠高于使用runtime。
綜上所述,求大神支招,如何通過runtime修改系統(tǒng)類的一個property屬性的初始值?