這是iOS11 Drag&Drop適配的一系列文章
我們可以在iOS的human-interface-guideline里面看到,drag&drop下提到了要盡量去適配UISpringLoadedInteraction卖局。什么是UISpringLoadedInteraction呢廊谓,最好的例子就是UINavigationBarItem,iOS11原生的UINavigationBarItem就已經(jīng)適配了UISpringLoadedInteraction斯入。當(dāng)我們將一個Drag操作移動到UINavigationBarItem的時候弓熏,我們可以看到這個item被選中呀舔,過了一會開始閃爍粱栖,并進(jìn)行對應(yīng)的操作话浇。這個效果就是配置了UISpringLoadedInteraction。更多的運(yùn)用闹究,可以參考原生的備忘錄幔崖。
從guideline我們可以看到,如果我們進(jìn)行Drag&Drop適配的時候跋核,一般情況下都會需要進(jìn)行頁面跳轉(zhuǎn)岖瑰,這時候我們需要對不同View添加UISpringLoadedInteraction進(jìn)行操作。
簡單的代碼如下:
UISpringLoadedInteraction *springInteraction = [[UISpringLoadedInteraction alloc] initWithActivationHandler:^(UISpringLoadedInteraction * _Nonnull interaction, id<UISpringLoadedInteractionContext> _Nonnull context) {
HandleViewActivationBlock block = [weakSelf getHandleViewActivationBlock];
// Do something here
}];
[self addInteraction:springInteraction];
因為需要對大量的View砂代,Cell以及按鈕進(jìn)行配置蹋订,需要寫大量的重復(fù)代碼,在這里我寫了一個UIView的Category刻伊,只要兩個方法就可以就View進(jìn)行UISpringLoadedInteraction的適配露戒。
Demo預(yù)覽:
地址:
https://github.com/kingandyoga/UserfulUISpringLoadedInteraction