0

ユーザーがあるビューやラベルなどから別のビューにスワイプしたかどうかを確認しようとしています。

これが私の関連するコード

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」で開始された場合、ブール値は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 に答える