touchesBegin & touchesMove Xcode Obj C 问题

Posted

技术标签:

【中文标题】touchesBegin & touchesMove Xcode Obj C 问题【英文标题】:touchesBegin & touchesMove Xcode Obj C Question 【发布时间】:2010-06-16 01:37:17 【问题描述】:

因此,当您按下并拖动时,我的应用程序运行良好。我还在 Interface Builder 中将 UIButtons 设置为 Touch Down。

当您拖动时,您需要从 UIButton 的外部拖动。您不能单击 UIButton 并拖动到另一个。

触摸移动:

代码:

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

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

if(CGRectContainsPoint(oneButton.frame, location))

    if (!oneButton.isHighlighted)
        [self oneFunction];
        [oneButton setHighlighted:YES];
    
else 
    [oneButton setHighlighted:NO];

//
if(CGRectContainsPoint(twoButton.frame, location)) 

    if (!twoButton.isHighlighted)
        [self twoFunction];
        [twoButton setHighlighted:YES];
    
else 
    [twoButton setHighlighted:NO];

开始接触:

代码:

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

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

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

if(CGRectContainsPoint(oneButton.frame, location))

    [self oneFunction];
    [oneButton setHighlighted:YES];

if(CGRectContainsPoint(twoButton.frame, location))

    [self twoFunction];
    [twoButton setHighlighted:YES];

我希望能够单击任何按钮触发该功能,并且还能够从一个按钮拖动到另一个按钮并触发该功能。

所以基本上只需点击一个按钮并将手指滑过并激活另一个按钮,而无需从按钮外部按下和滑动。

我想我已经很接近了,需要一些帮助。希望这足够清楚。

谢谢。

【问题讨论】:

最好的地方是objective-c而不是c。 该代码看起来不错。它没有做什么你想要的? @Jeff 不起作用的是,当我点击其中一个 UIButton 时,我可以将手指滑到另一个 UIButton 以触发该功能。我必须从任何 UIButtons 外滑动手指。 这些方法在哪里?视图控制器? 是的,它在 UIViewController 内部 - MainViewController : UIViewController 是通过我的 RootViewController 拉出的,它将该视图分配为第一个。 MainWindow.xib -> MainView.xib 所以是的,它在视图控制器中。 【参考方案1】:

尝试了一些不同的东西。使用它效果更好:

if(CGRectContainsPoint(myObject.frame, location) && lastButton != myObject) 

在 touchesBegan 和 touchesMoved 中使用它。

【讨论】:

以上是关于touchesBegin & touchesMove Xcode Obj C 问题的主要内容,如果未能解决你的问题,请参考以下文章

touchesBegin 在自定义 UITableViewCell,touchesEnded 在 UIView

Touchesbegin没有检测到被触摸的东西

UIScrollview touchesbegin,touchesmoved,touchesendactions

Foundation & UIKit & Cocoa Touch

[Sencha ExtJS & Touch] 在Sencha(Extjs/Touch)应用程序中使用plugins(插件)和mixins(混入)

sencha touch & PhoneGap中的基本程序