是否可以在iPhone中重新创建用户手势?

时间:2011-11-12 09:18:04

标签: iphone objective-c ios uigesturerecognizer

我正在开发一个应用程序,但我遇到了一个问题,归结为这种情况: 考虑具有两个按钮(button1,button2)和文本视图的超视图,所有这些都是其子视图。当我单击一个按钮时,我显示文本视图。当我点击textview之外的任何地方,但在超级视图中,我需要关闭文本视图。

我在超级视图中添加了一个UITapGestureRecognizer,并调用方法点击:在tap:中,我得到了点击的点,如果它在文本视图之外,我会关闭文本视图并删除GestureRecognizer。现在当我点击按钮2时会出现问题。我需要关闭文本视图以及执行按钮2的操作。但是它进入了tap:我不想从那里调用按钮2的方法。

我想知道的是,在移除手势识别器后,是否可以在相同的坐标上模拟相同的点按?如果不是我继续解决这个问题的方式是什么?

EDIT 我试过了:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

但它确实解决了我的问题

2 个答案:

答案 0 :(得分:2)

我不知道是否可以在iPhone中重新创建用户手势,但有一种简单的方法可以用来实现您的需求。您可以使用的方法是

// called before touchesBegan:withEvent: is called on the gesture recognizer for a new touch. return NO to prevent the gesture recognizer from seeing this touch
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch

您可以返回UIGestureRecognizer是否应该接收触摸,或者换句话说应该执行与手势识别器绑定的方法。如果您返回NO,则会将触摸传递给子视图。

不要忘记设置手势识别器的delegate。并在UIGestureRecognizerDelegate文件中包含.h协议

您可以检查触摸是否在按钮框内,然后您可以return NO其他return YES 以下是文档UIGestureRecognizer UIGestureRecognizerDelegate

答案 1 :(得分:0)

有一个简单的方法。这对我来说很好。请在“UIcontrolevents Touchdown”事件中调用您的方法。