TouchesMoved 与 Button?

Posted

技术标签:

【中文标题】TouchesMoved 与 Button?【英文标题】:TouchesMoved with Button? 【发布时间】:2010-02-07 22:23:08 【问题描述】:

是否可以将touchesMoved 功能与按钮一起使用而不是UIImageViews?

【问题讨论】:

【参考方案1】:

是的。

在您的 .h 文件中

IBOutlet UIButton *aButton;

在您的 .m 文件中

    -(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event

    UITouch *touch = [[event touchesForView:self.view] anyObject];

    CGPoint location = [touch locationInView:touch.view];

    if(CGRectContainsPoint(p1.frame, location)) 
    
        if (!p1.isHighlighted)
            [self pP01];
            [p1 setHighlighted:YES];
    
else 
        [p1 setHighlighted:NO];
    
    //
    if(CGRectContainsPoint(p2.frame, location)) 
    
        if (!p2.isHighlighted)
            [self pP02];
            [p2 setHighlighted:YES];
        
    else 
        [p2 setHighlighted:NO];
    
    if(CGRectContainsPoint(p3.frame, location))
    
        if (!p3.isHighlighted)
            [self pP03];
            [p3 setHighlighted:YES];
        
    else 
        [p3 setHighlighted:NO];
    

最后,在 Interface Builder 中,将您的按钮连接到“aButton”并为您的按钮关闭“启用用户交互”。 这很重要,因为它允许 touchesMoved 处理它。

我已经调整了上面的代码来检查按钮的高亮状态。这是为了在您在该区域内拖动手指时阻止它多次触发按钮。

要让您的“钢琴键”在您敲击时发挥作用,请使用-(void)touchesBegan

要将您的按钮高亮状态设置回= NO;,请使用-(void)touchesEnded

我不得不找出你所追求的完全相同的东西。我想不通Touch Drag Enter

因此,为避免在该主题上发布多个帖子,请查看我的问题和答案。

question 1

question 2

【讨论】:

嘿.. 感谢您的回答,但我收到了 UITouch *touch = [[event....!我在 UITouch *touch = [[event allTouches] anyObject]; 中更改了这一行它工作。但是.. =) 如果我按下我的按钮,它应该发出一个音符。但现在我不能按,只能滑动。如果我滑入我的按钮,音符会不止一次响起。你能帮帮我吗?谢谢您的回答。我现在才看到。谢谢【参考方案2】:

您当然可以发现当前正在触摸事件的“视图”正在拖动,即使它是一个按钮。您还可以对 Interface Builder 中的按钮使用“触摸拖动输入”连接。选择按钮后按 cmd+2 查看连接选项卡。

【讨论】:

以上是关于TouchesMoved 与 Button?的主要内容,如果未能解决你的问题,请参考以下文章

C语言中怎样让tablelayoutpanel中控件居中显示?

IOS开发button点击之后有高亮效果,效果一直保留,点击下一个按钮高亮效果转移。

开发中遇到的bug-Property or method “xxxx“ is not defined on the instance but referenced during render.

关于用$.Ajax()控制按钮的选择与查看

微信小程序开发点击事件

jQuery之排他思想