使用touchesBegan& touchesEnded as Swipe

时间:2013-03-15 23:11:17

标签: ios objective-c cocoa-touch uiview uikit

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

这是我的相关代码

ViewController.h:

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

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

ViewController.m:

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

如果滑动开始于“swipeBegin”,则bool值设置为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"];
    }
}

1 个答案:

答案 0 :(得分:0)

触摸视图永远不会改变,如果它在swipeBegin中始终是它的视图。如果你想找到它结束的地方,请使用触摸的结束位置hitTest:withEvent:,这将返回你正在寻找的视图。