سؤال

وأريد أن كشف، أي جزء من الشاشة لمس، عندما يهز مستخدم اي فون.

وأفعل ذلك بالطريقة التالية:

-(void) accelerometer: (UIAccelerometer*)accelerometer didAccelerate: (UIAcceleration*)acceleration
{
    float shakeStrength = sqrt( acceleration.x * acceleration.x + acceleration.y * acceleration.y + acceleration.z * acceleration.z );

    if (shakeStrength >= 1.5f)
    {
        if (isLeftHandTouches && isRightHandTouches)
        {
            DebugLog(@"both hands shake");
        } else if (isLeftHandTouches)
        {
            DebugLog(@"left hand shake");
        } else if (isRightHandTouches)
        {
            DebugLog(@"right hand shake");
        }
    }
}

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

    for (int i = 0; i < [allTouches count]; i++)
    {
        if ([ [ [allTouches allObjects] objectAtIndex: i] locationInView: [self view] ].x <= 240.0f)
        {
            isLeftHandTouches = YES;
        } else
        {
            isRightHandTouches = YES;
        }
    }
}

-(void) touchesEnded: (NSSet *)touches withEvent: (UIEvent *)event
{
    NSSet *allTouches = [event allTouches];

    for (int i = 0; i < [allTouches count]; i++)
    {
        if ([ [ [allTouches allObjects] objectAtIndex: i] locationInView: [self view] ].x <= 240.0f)
        {
            isLeftHandTouches = NO;
        } else
        {
            isRightHandTouches = NO;
        }
    }
}

كل شيء يعمل بشكل جيد إذا كان المستخدم يزيل بكلتا يديه قبل اتخاذ هزة أخرى، ولكن يحصل افسدت كل شيء حتى لو كان لدي بكلتا يديه على الشاشة وإزالة واحد منهم.

وأي بمعنى. I يهز بكلتا يديه على الشاشة وبعد ذلك أريد أن يهز فون مع جهة واحدة فقط. في هذه الحالة سوف يهز لا يعول - كما إذا كان هناك أي اللمسات على الشاشة. أفترض أنني عندما إزالة يد واحدة من الشاشة، يتم إزالة كل من "لمسات".

ما هي المشكلة وكيف يمكنني إصلاحه؟

وشكرا.

هل كانت مفيدة؟

المحلول

لماذا تعداد على -allTouches؟ مجرد تعداد خلال مجموعة touches الذي تم تمريره في. الشيء نفسه ينطبق على كلتا الطريقتين.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top