0

我正在尝试查看用户是否从一个视图、标签等一直滑动到另一个视图、标签等。

这是我的相关代码

ViewController.h :

@property (strong, nonatomic) IBOutlet UITextField *textField;
@property (strong, nonatomic) IBOutlet UILabel *swipeBegin;
@property (strong, nonatomic) IBOutlet UILabel *swipeEnd;

TextField :显示整个事情是否成功。
SwipeBegin :滑动开始的标签。
SwipeEnd :滑动应该结束的标签。

视图控制器.m:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
if ([touch view] == swipeBegin) {
    gestureStartPointTouched = YES;
}

如果滑动开始于“swipeBegin”,则布尔值设置为 YES。

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *touch = [touches anyObject];
if ([touch view] == swipeEnd) {        
    if (gestureStartPointTouched == YES) {
        [TextField setText:@"Success"];
    }
}

如果我开始在“swipeBegin”处滑动,则调用 touchesBegan 方法 -> 工作正常

麻烦的部分是 touchesEnded 方法。

if([touch view] == swipeEnd)

不管我怎么做都是假的。

有人有建议吗?

谢谢你 !


解决方案


编辑 touchesEnded 方法:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
if ([self.view hitTest:[[touches anyObject] locationInView:self.view] withEvent:event] == SwipeEnd) {
    if (gestureStartPointTouched == YES) {
        [TextField setText:@"Success"];
    }
}
4

1 回答 1

0

触摸的视图永远不会改变,如果它从 swipeBegin 开始,那将永远是它的视图。如果您想通过触摸的结束位置找出它在哪里结束使用hitTest:withEvent:,那将返回您正在寻找的视图。

于 2013-03-15T23:26:11.333 回答