2017-08-19 8 views

答えて

2

あなたはバグを発見しました。 (アップルに提出され、レーダー33979954.)うまくいけば、それはすぐに修正されますが、それまで、ここでの修正があります:

extension UIDynamicAnimator { 
    func views(in rect: CGRect) -> [UIView] { 
     let nsitems = self.items(in: rect) as NSArray 
     return nsitems.flatMap{$0 as? UIView} 
    } 
} 

今の代わりitems(in:)view(in:)を呼び出して、すべてがうまくなります。

問題は、items(in:)から返された配列に疑似オブジェクトが入れられていることです。これらの疑わしいオブジェクトのために、アレイはObjective-CからSwiftにブリッジを渡すことはできません。返される配列はSwiftに[UIDynamicItem]と入力されますが、配列にはUIDynamicItemオブジェクトではないものが含まれています。

拡張機能は、ブリッジを越えないようにすることで回避できます。私たちはNSArray Objective-Cの世界にとどまり、疑似オブジェクトを除外し、そしてが橋を渡ります。

関連する問題