0

我为摇动手势提供的以下代码工作得非常好,只是当我在三个单独的 uitableviews 中使用它时,一旦你离开一个 tableview 转到下一个,摇动手势就不再起作用了。知道如何让它在所有三个视图控制器上工作吗?另外,我可以选择在“detailviewcontroller”上发布信息,但是,一旦您离开其中一个表格视图,它就会禁用 twitter 的键盘。关于如何解决这个问题的任何想法?谢谢!

//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
4

1 回答 1

0

为什么不制作一个基类视图控制器(从 UIViewController 派生)并将您的抖动运动检测(“ motionEnded:withEvent:”)功能放入其中,然后从包含 Shake-Motion 代码的视图控制器类中子类化您的三个不同的视图控制器?

换句话说,将您的抖动检测代码放入如下所示的类中:

@interface HenryViewController : UIViewController

然后在您的三个不同的视图控制器中,您可以像这样声明它们:

@interface FirstViewController : HenryViewController

@interface SecondViewController : HenryViewController

至于无法发布信息,键盘可能会消失,因为您在resignFirstResponderDetailViewController 上调用“”,因为它消失了。

于 2013-08-01T22:14:45.403 回答