2013-08-01 1 views
0

Следующий код, который я использую для жесты встряхивания, отлично работает, это просто, когда я использую его в трех отдельных uitableviews, и как только вы оставите один столбец, чтобы перейти к следующему, больше не работает. Любая идея, как заставить его работать во всех трех диспетчерах просмотра? Кроме того, у меня есть возможность изъять информацию о «detailviewcontroller», однако, как только вы оставите один из видов таблиц, он отключит клавиатуру для твиттера. Любые идеи, как это исправить? Благодаря!Shake Gesture Code Disabling Tweet Клавиатура и встряска

//BEGIN SHAKE GESTURE CODE 
- (void)viewDidAppear:(BOOL)animated { 

    [self becomeFirstResponder]; 
} 

- (void)viewDidDisappear:(BOOL)animated { 

    [self resignFirstResponder]; 

} 


- (BOOL)canBecomeFirstResponder { 
    return YES; 

} 

- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event { 

    if (event.subtype == UIEventSubtypeMotionShake) { 

     int section = 0; 
     int row = arc4random() %36; 
     NSIndexPath * path = [NSIndexPath indexPathForRow:row inSection:section]; 
     [self handleSelectedRow:path.row]; 

     [self.tableView selectRowAtIndexPath:path animated:YES scrollPosition: UITableViewScrollPositionNone]; 


    } 
} 

-(void)handleSelectedRow:(int)row; 
{ 
    UIButton * btn = [UIButton buttonWithType:UIButtonTypeCustom]; 
    btn.tag = row; 
    [self performSegueWithIdentifier:@"showRecipeDetail" sender:btn]; 
} 

//END SHAKE GESTURE CODE 

ответ

0

Почему бы не сделать контроллер представления базового класса (производный от UIViewController) и поставить обнаружение движения встряхивания («motionEnded:withEvent:») функцию в том, что, а затем подкласса ваших три различных контроллеров просмотра с вашим встряхиванием-Motion-коды Включенный класс контроллера класса?

Другими словами, поместите код обнаружения встряски в класс, который выглядит как:

@interface HenryViewController : UIViewController 

, а затем в ваших трех различных контроллеров зрения, их можно объявить так:

@interface FirstViewController : HenryViewController 

@interface SecondViewController : HenryViewController 

Что касается того, что вы не можете получать информацию, клавиатура, скорее всего, исчезает, потому что вы вызываете «resignFirstResponder» на свой DetailViewController, когда он исчезает.

Смежные вопросы