mendeteksi sentuhan dalam animasi UIImageView

saya memiliki gambar lingkaran yang mengelilingi layar menggunakan animasi jalur. Dan saya ingin mendeteksi ketika pengguna menyentuh lingkaran bergerak. Namun meskipun gambar bergerak dalam lingkaran terus menerus, bingkainya masih di pojok kiri atas tidak bergerak, bagaimana cara memperbaruinya sehingga saya dapat mendeteksi sentuhan pada gambar bergerak? Ini kodenya...

Siapkan Animasi di ViewDidLoad:

//set up animation
CAKeyframeAnimation *pathAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
pathAnimation.calculationMode = kCAAnimationPaced;
pathAnimation.fillMode = kCAFillModeForwards;
pathAnimation.removedOnCompletion = NO;
pathAnimation.duration = 10.0;
pathAnimation.repeatCount = 1000;
CGMutablePathRef curvedPath = CGPathCreateMutable();

//path as a circle
CGRect bounds = CGRectMake(60,170,200,200);
CGPathAddEllipseInRect(curvedPath, NULL, bounds);

//tell animation to use this path
pathAnimation.path = curvedPath;
CGPathRelease(curvedPath);

//add subview
circleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ball.png"]];    
[testView addSubview:circleView];

//animate
[circleView.layer addAnimation:pathAnimation forKey:@"moveTheSquare"];

Metode Sentuhan:

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {

    //detect touch
    UITouch *theTouch = [touches anyObject];

    //locate and assign touch location
    CGPoint startPoint = [theTouch locationInView:self.view];    
    CGFloat x = startPoint.x;
    CGFloat y = startPoint.y;

    //create touch point
    CGPoint touchPoint = CGPointMake(x, y);

    //check to see if the touch is in the rect    
    if (CGRectContainsPoint(circleView.bounds, touchPoint)) {       

        NSLog(@"yes");
    }

    //check image view position
    NSLog(@"frame x - %f, y - %f", circleView.frame.origin.x, circleView.frame.origin.y);
    NSLog(@"center x - %f, y - %f", circleView.center.x, circleView.center.y);
    NSLog(@"bounds x - %f, y - %f", circleView.bounds.origin.x, circleView.bounds.origin.y);

}

tampilan gambar sepertinya tetap berada di sudut kiri atas. Sepertinya saya tidak tahu cara mengenali apakah ada gerakan sentuh yang dilakukan pada bola yang bergerak.

bantuan apa pun akan dihargai,

Kris


person ChrisM    schedule 26.10.2011    source sumber
comment
Salah satu cara termudah adalah dengan membuat UIButton bertipe custom dan menambahkan gambar Anda sebagai latar belakang tombol. Kemudian Anda dapat menambahkan pemilih ke tombol untuk mematikan ketika disentuh, dll. Semoga ini bisa membantu :)   -  person Luke    schedule 26.10.2011
comment
Hai, ya, saya sudah mencobanya terlebih dahulu. Tapi itu tidak sesuai dengan apa yang saya cari. Karena saya ingin menggunakan touchMoved:(NSSet *)touches withEvent:(UIEvent *)event untuk melihat berapa lama pengguna dapat menahan gambar. Tentunya harus ada cara untuk mengakses posisi gambar tersebut? Bersulang,   -  person ChrisM    schedule 26.10.2011


Jawaban (1)


Anda perlu menanyakan lapisan presentasi tampilan, bukan bingkainya. Hanya presentasi yang akan diperbarui selama animasi berlangsung...

[myImageView.layer presentationLayer]

Akses properti lapisan ini (asal, ukuran, dll) dan tentukan apakah titik sentuh Anda berada dalam batasan.

person Simon Lee    schedule 26.10.2011