我的MainViewController在viewdidload中包含这些行:
UIStoryboard* overviewStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *overviewController = [overviewStoryboard instantiateViewControllerWithIdentifier:@"Overview"];
UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:overviewController];
...
[self addChildViewController:nav];
[self.view addSubview:nav.view];
[nav didMoveToParentViewController:self];
概述后面的Controller包含了视图中的整个手势识别加载:
属性
@property (nonatomic, strong) UISwipeGestureRecognizer *swipeGestureUpDown;
viewDidLoad中:
self.tableView.dataSource = self;
self.tableView.delegate = self;
// gesture recognizer top
self.swipeGestureUpDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreen)];
self.swipeGestureUpDown.numberOfTouchesRequired = 1;
self.swipeGestureUpDown.direction = (UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown);
[self.view addGestureRecognizer:self.swipeGestureUpDown];
和swipedScreen只有一个nslog:
- (void)swipedScreen:(UISwipeGestureRecognizer*)gesture
{
NSLog(@"somewhere");
}
overviewcontroller包含一个带有自定义单元格的tableView。 maincontroller将此overviewcontroller作为rootcontroller传递给导航,如果你swipeUp则应该是slideUp,如果你swipeDown则应该是slideIn。正如您在上面看到的那样,maincontroller正在使用rootcontroller调用navigationcontroller。
没有任何反应,没有识别出任何手势,并且在某些尝试中它会因此消息而崩溃
unrecognized selector sent to instance
现在有人做了什么?
答案 0 :(得分:0)
回答评论中提出的问题。只是在这里巩固它。 有一些问题 的第一强>
self.swipeGestureUpDown = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreen)];
@selector(swipedScreen)
在swipedScreen
结尾处缺少:,这使其无法识别,因为该函数的定义为- (void)swipedScreen:(UISwipeGestureRecognizer*)gesture
的第二强>
self.swipeGestureUpDown.direction = (UISwipeGestureRecognizerDirectionUp | UISwipeGestureRecognizerDirectionDown);
对于两个滑动方向具有单个手势识别器不起作用。有关详细信息,请参阅this。您需要为每个方向配备专用的手势识别器。
的第三强>
最重要的是尝试在UITableView
上添加向上和向下方向滑动,只要在UITableView
中启用滚动功能就行不通,因为它有自己的默认操作来处理这些滑动这可以防止手动处理。
但是如果表格中的内容非常有限且不需要滚动,您可以将scrollEnabled
设置为false
,这将UITableView
停止使用手势并将响应者链上方的手势转发。请参阅scrollEnabled
说明here。 (UITableView
继承自UIScrollView
。)