【问题标题】:drag and drop programmatically generated UIButtons拖放以编程方式生成的 UIButton
【发布时间】:2011-02-06 00:19:36
【问题描述】:

我通过 for 循环动态创建了许多 uibutton 并将它们添加到场景中。现在我想为每个 uibutton 添加拖放功能。我怎样才能做到这一点?

比如说像破坏者这样的游戏,你有一个桨。它是唯一可以被玩家拖放的对象,所以我们需要做的就是为 paddle 添加一个 uibutton 对象,并在 touchesBegan 和 touchesMoved 中更新它的中心。

在我的问题中,我不知道会点击哪个按钮。如果我将一个动作附加到所有按钮以跟踪哪个按钮被单击,那么我将无法在玩家第一次单击按钮时执行 DRAG。也许有更好的方法。

【问题讨论】:

    标签: iphone drag-and-drop uibutton


    【解决方案1】:

    如果我不明白,请纠正我,但每个按钮都应该“知道”它是否是被点击的那个。在touchesMoved:withEvent: 方法中,你不能把中心设置为触摸的位置,还是我遗漏了什么?

    试试这个。

    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
        if (self.highlighted) {
            UITouch *touch = [touches anyObject];
            self.center = CGPointMake(touch.x, touch.y);
        }
    }
    

    当然,这段代码有几个问题,比如不能很好地处理多次触摸,但我希望它能够理解这一点。 如果您只想知道当前点击了哪个按钮,您可以使用 UIControl 的highlighted 属性。希望对您有所帮助!

    【讨论】:

    • 我不知道每个按钮都应该知道它是否被点击。你能写代码来完成这个吗?谢谢。
    • 适当地编辑了答案。我没有对 touchesBegan: 之类做太多的工作,所以它可能没有你想要的那么具体。
    • 它不起作用。我收到错误“在非结构或联合的情况下请求成员‘突出显示’”。
    • 你在继承 UIButton 吗?
    • 不,我只是复制了您的代码并替换了我的 touchesMoved。抱歉,我对 iphone 编程和目标很陌生 -c
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2012-02-13
    • 2015-02-27
    • 1970-01-01
    • 2014-08-08
    相关资源
    最近更新 更多