数年後、私は XCode を使って iOS 用の小さなアプリを作成しようと試みました。
私の 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];
概要の背後にあるコントローラーには、ビュー内のジェスチャ認識全体が含まれています。
プロパティ
@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");
}
概要コントローラには、カスタム セルを含む tableView が含まれています。メインコントローラーは、このオーバービューコントローラーをルートコントローラーとしてナビゲーションに渡します。これは、スワイプアップの場合はslideUp、スワイプダウンの場合はslideInになります。上記で見たように、maincontroller は rootcontroller で navigationcontroller を呼び出しています。
何も起こらず、ジェスチャが認識されず、試行によってはこのメッセージでクラッシュします
unrecognized selector sent to instance
誰かが今何をすべきですか?