2009-03-15 19 views
6

Şu anda bir dokunma olayının dokunmanın gerçekleştiği yerde UIView'yi göstereceğini görüyorum. Ama ya bir daire gibi dikdörtgen olmayan bir şekle dokunmak zorunda kalırsam ne olur? Böyle bir şey yapmaya nasıl giderim?Belirli bir alandaki bir dokunuşu nasıl algılayabilirim

Temel olarak, yalnızca kullanıcı görülemeyen dairesel bir alan içinde bir yere dokunursa bir şeyler yapmak istiyorum.

Herhangi bir yardım/yön takdir edilir, TIA!

cevap

7

Böyle yaparsınız. 'LocationInView', belirtilen görünümle ilgili olarak dokunmanın koordinatlarını döndüreceğinden, bu görünümün ekranda nerede olduğuna bakılmaksızın, bir görüntünün sol üst köşesindeki bir dokunuşun (0,0) geri döneceğini unutmayın.

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    UITouch *touch = [touches anyObject]; 

    // gets the coordinats of the touch with respect to the specified view. 
    CGPoint touchPoint = [touch locationInView:self]; 

    // test the coordinates however you wish, 
    ... 
} 

sonra, kürenin merkezine temas noktası arasındaki mesafeyi hesaplamak Bu küre yarıçapından daha az olup olmadığını kontrol edecek bir küre karşı test etmek için.

+0

Teşekkürler Andrew! Standart olmayan bazı şekillerin belirlenmesiyle ilgili ipuçları var mı? Sanırım CGContext ile bir şekil çizmek gibi bir şey olurdu, ve bir şekilde buna karşı kontrol mü? ya da ne ? – dizy

+0

CGContext'i çizim için kullanacaksınız, ancak "IsInside" calc için sadece matematiği kullanmanız gerekecek. Şekilleri çokgenler olarak ifade ederseniz, oldukça basittir. Bu bağlantı size yardımcı olabilir: http://local.wasp.uwa.edu.au/~pbourke/geometry/insidepoly/ –