2012-03-09 6 views
0

Я делаю каменное приложение, которое показывает скалу, пропускающую воду. То, что я хочу сделать, - это обнаружить движение, когда рука быстро перемещается из стороны в сторону (как будто вы пропускаете камни). Я попробовал следующий код, и это результаты, которые я получаю в своем журнале. Есть ли обнаружение жестов, которое я могу использовать?Дыхание или обнаружение движения движения с помощью iphone

-(void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    if (event.subtype == UIEventSubtypeEndSeekingForward) 
    { 
     NSLog(@" Forward event ..."); 
    } 
    else 
    { 
     NSLog(@" Something moved but I dont know what event ..."); 
    } 

    if ([super respondsToSelector:@selector(motionEnded:withEvent:)]) 
     [super motionEnded:motion withEvent:event]; 
} 

-(BOOL)canBecomeFirstResponder 
{ 
    return YES; 
} 

-(void) viewWillAppear:(BOOL)animated 
{ 
    [self becomeFirstResponder]; 
    [super viewWillAppear:animated]; 
} 
- (void) viewWillDisappear:(BOOL)animated 
{ 
    [self resignFirstResponder]; 
    [super viewWillDisappear:animated]; 
} 

Это то, что я получаю, когда я быстро шевелить iPhone назад и вперед (бывает в обе стороны)

Что-то двигалось, но я не знаю, какое событие ...

Что-то двигалось, но Я не знаю, какое событие ...

Что-то двигалось, но я не знаю, какое событие ...

Кроме того, мне пришлось приложить много усилий, чтобы сделать работу по обнаружению. Итак, два вопроса:

  • Есть ли встроенный пороговый номер, который я могу переопределить?
  • И как я могу сказать это, чтобы сделать это действие только в том случае, когда телефон перемещен вперед?

Благодаря

+2

Я не уверен, что хочу, чтобы мой iPhone обнаружил мое подергивание .... :) –

+0

lol, теперь это приложение, которое не увидит свет в магазине приложений, хотя я уверен, что это будет огромный хит если он когда-либо получил одобрение от Apple puritans * Smile * $$$ any –

+0

Вы будете нести ответственность за множество сломанных iPhone :-) –

ответ

0

Если вы видите class reference for UIEvent, вы поймете, что единственное движение, связанное с подтипом события UIEventSubtypeMotionShake, что означает, что вы можете только знать, от этого события, что устройство было поколеблено.

Для достижения того, чего вы хотите достичь, вам нужно будет использовать значения акселерометра напрямую.

Это означает, что во-первых, вам нужно будет сделать некоторые тесты на то, какие значения возвращает акселерометр, когда вы делаете это конкретное движение, и на разных этапах движения. Вы также должны получить диапазон значений, в которых движение все еще имеет смысл.

Затем вам необходимо будет интегрировать эти значения в ваше приложение, в основном, что вам нужно будет сделать, в вашем делегате акселерометра проверить, чтобы на каждом шаге движения значения, которые акселерометр давая вам внутри диапазонов, которые вы испытали, имеет смысл.

Это не прогулка в парке, будьте осторожны.

+0

Есть ли какой-нибудь образец акселерометра код? Я искал его по всему Интернету и на этом сайте. –

+0

Я вам очень помог, если я вам очень помогу, вы не научитесь и не сможете самостоятельно решать другие проблемы. Существует пример проекта для Accelerometer, и его должно быть легко найти, поэтому я не уверен, что вы достаточно пристально смотрели. – EmilioPelaez