UIDynamicAnimator干扰addTarget和beginTouches?

时间:2015-04-12 06:56:20

标签: ios swift uibutton uitabbarcontroller

我希望自己获得更多声望,因此我可以附上我正在处理的内容的屏幕截图,但您可以在下面的第二个链接中看到一个示例。

基本上标签栏中有一个中间按钮,它会显示选项按钮(在这种情况下是苹果图像)。

使用UIDynamicAnimator和UIAttachmentBehavior将这些苹果图标设置为动画。

以下是添加选项按钮的代码

func showOptions() {
    var numberOfItems = self.delegate.brOptionsButtonNumberOfItems(self)
    //NSAssert(numberOfItems > 0 , "number of items should be more than 0")
    var angle = 0.0
    var radius:Int = 20 * numberOfItems
    angle = (180.0 / Double(numberOfItems))

    // convert to radians
    angle = angle/180.0 * M_PI
    for(var i = 0; i<numberOfItems; i++) {
        var csCalc = Float((angle * Double(i)) + (angle/2))
        var buttonX = Float(radius) * cosf(csCalc)
        var buttonY = Float(radius) * sinf(csCalc)
        var wut = (angle * Double(i)) + (angle/2)
        var brOptionItem = self.createButtonItemAtIndex(i)
        var mypoint = self.tabBar.convertPoint(self.center, fromView:self.superview)

        var x = mypoint.x + CGFloat(buttonX)
        var y = self.frame.origin.y - CGFloat(buttonY)
        var buttonPoint = CGPointMake(x, y)

        //println("Button Point of Button Item x:\(x) y: \(y)")

        brOptionItem.layer.anchorPoint = self.layer.anchorPoint
        brOptionItem.center = mypoint

        var attachment = UIAttachmentBehavior(item:brOptionItem, attachedToAnchor:buttonPoint)
        attachment.damping = self.damping
        attachment.frequency = self.frequency
        attachment.length = 1

        // set the attachment for dragging behavior
        brOptionItem.attachment = attachment
        self.dynamicItem!.addItem(brOptionItem)
        //if(self.delegate.respondsToSelector("willDisplayButtonItem")) { //Fix me
            //self.delegate.brOptionsButton(self, willDisplayButtonItem:brOptionItem)

        //}

        self.tabBar.insertSubview(brOptionItem, belowSubview: self.tabBar)
        self.dynamicsAnimator!.addBehavior(attachment)
        self.items.addObject(brOptionItem)
    }
}

func createButtonItemAtIndex(indexz:NSInteger) -> BROptionsItem {
    println("Create button item at index")
    var brOptionItem = BROptionsItem(initWithIndex:indexz)
    brOptionItem.addTarget(self, action:"buttonItemPressed:", forControlEvents:.TouchUpInside)
    brOptionItem.autoresizingMask = UIViewAutoresizing.None
        var image = self.delegate.brOptionsButton(self, imageForItemAtIndex:indexz)

        //if((image) != nil) {
            brOptionItem.setImage(image, forState: UIControlState.Normal)

        //}
            /*

        var buttonTitle = self.delegate.brOptionsButton(self, titleForItemAtIndex:indexz)

        if(buttonTitle.utf16Count > 0) {

            brOptionItem.setTitle(buttonTitle, forState:UIControlState.Normal)

        }
        */
    return brOptionItem;
}

在showOptions中,动画师被分配了一个刚刚在调用createButtomItemAtIndex时创建的brOptionItem的附件行为。

在createButtonItemAtIndex中,创建了brOptionItem并添加了一个目标,以便在点击按钮时执行一个函数。

选项按钮在没有动画的情况下工作。我可以单击它们并执行目标函数。

但是,当添加动画并将选项按钮放在它们所在的位置时,点击按钮时没有任何反应。

我非常坚持这一点。我不知道为什么动画会停止点击动作。按钮也应该是可拖动的。

这是我的源代码。我引用的代码可以在BROptiosnButton文件中看到。

https://github.com/WobbleDev/BROptionsSwift

以下是我使用的参考代码

https://github.com/BasheerSience/BROptionsButton

谢谢!

0 个答案:

没有答案