如何手动触发iOS中的touchesBegan值?

时间:2015-05-07 08:32:22

标签: ios objective-c iphone uiview

我有一个父视图控制器,并且有一个子视图(UIView)。

子视图(名为xibSubView)被称为其他自定义类(xib)文件。

当我点击父Viewcontroller时,子视图(UIView)将动画触摸父视图控制器上的开始位置。

父视图控件具有

 // UIViewcontroller.h file
  .....    
 @property (weak, nonatomic) IBOutlet XibSubView *xibSubView;
 .....

以下代码位于父视图控制器.m

 -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
    self.subViewConstraint.constant = touchLeftScreenPoint.x ;
    self.subViewConstraint.constant = touchLeftScreenPoint.y ;

 }

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

 -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
 }

xib(subview-xibSubView)代码具有相同的委托方法。

 // The code is in the parent viewcontroller .m
 -(void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
 {
 }

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

 -(void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
 {
 }

在xibSubView中有很多元素。

其中一个元素将移动到子视图中的单击位置(xibSubView)。

所以我想将父视图控制器触摸传递给xibSubView。

手动调用xibSubView中的touchBegan让元素运动。

所以我应该将父视图控制器触摸位置转换为子视图触摸位置。

子视图触摸x位置,y位置将减去viewcontroller的宽度和高度,并手动调用touchbegan方法。

但我不知道如何更改触摸x,y值恢复到触摸。

然后调用代码:

 [self.xibSubView touchesBegan:touches withEvent:event];

如何更改NSSet触摸x,y变量并恢复到触摸。

非常感谢。

2 个答案:

答案 0 :(得分:4)

<强>夫特

NSMutableArray *touchArray = [NSMutableArray new];
[touchArray addObject:[UITouch new]];
NSSet *touches = [[NSSet alloc] init];
[touches setByAddingObjectsFromArray:touchArray];
[self touchesBegan:touches withEvent:UIEventTypeTouches];

答案 1 :(得分:0)

ViewController.m

DiffMerge

view.h

#import "ViewController.h"
#import "view.h"

@interface ViewController ()
{
 view *v;
}
@end

@implementation ViewController
- (void)viewDidLoad {
   v=[[view alloc]initWithFrame:CGRectMake(10, 10, 100, 100)];
   [self.view addSubview:v];
}
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
   [v touchesBegan:touches withEvent:event];
}
@end

view.m

#import <UIKit/UIKit.h>

@interface view : UIView
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
@end