我正试图在某些事件上调用这些方法:
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
但我不知道如何填写参数: 1 - (NSSet *)接触 2 - withEvent:(UIEvent *)事件
任何人都可以为我提供一个参数调用(void)touchesEnded和(void)touchesMoved :(和 - (void)touchesBegan
答案 0 :(得分:0)
UITouch和UIEvent没有公共构造函数,因此您无法生成触摸方法所需的参数。
正如dasblinkenlight所说,肯定会有另一种解决方法。但是,目前的做法绝对不可能。
答案 1 :(得分:0)
系统会自动调用这些方法。你永远不会直接打电话给他们。
你应该做什么,这取决于你的目标。如果你只想“模拟”触摸,只需要帮助方法。然后,让touchesXXXX直接调用它们。
我们没有获得创建UITouch对象的API,因此如果您想保留其信息,则必须镜像它们。有点像...
@interface MyTouch : NSObject {
UITouchPhase phase
NSUInteger tapCount
NSTimeInterval timestamp
UIView *view
UIWindow *window
CGPoint locationInView;
CGPoint locationInWindow;
@end
然后,你可以有这样的方法......
- (void)handleTouches:(NSSet*)touches {
}
触摸是一组MyTouch对象。
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
// For UITouch in touches, create a MyTouch, and add it to your own
// collection of touches.
[self handleTouches:myTouches];
}
如果您为每个touchesXXXX方法执行此操作,则每个方法都会将处理权交给您自己的方法。
现在,通过这样做,您可以控制创建自己的触摸对象。您可以为任何视图或模式配置它们。然后,在任何其他代码中,您可以创建MyTouch对象的集合,并使用它们调用handleTouches:。
只要touchesXXXX方法只是创建您的特殊对象,并将它们传递给您的方法,无论系统是否生成触摸,您都可以拥有完全相同的行为,或者您可以模拟它们。
现在,你没有得到的是自动生成系统事件。
如果你因为表现而被杀,有一些简单的方法可以避免创建额外的设置和对象,但这不是你的问题。