魔法が起こっていることを理解するのを手伝ってください。私が持っているのは、カスタム セルを含む tableView です。長いタップを処理する必要はありませんが、タップが発生すると、次のメッセージが表示されてプログラムがクラッシュします。
例外 'NSInvalidArgumentException'、理由: '-[__NSCFType signatureRecognizerShouldBegin:]: 認識されないセレクターがインスタンス 0xa0836a0 に送信されました'
Crash while long press on the tableviewで同様の質問を見つけましたが、その解決策は役に立ちませんでした。実際、独自の長いジェスチャ認識エンジンを追加しようとすると、ハンドラー関数が呼び出されません。迷惑なエラーが何度も繰り返されます。
私がここでしていることをより正確に:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
セルを返す直前に、次の行があります。
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress)];
[セル addGestureRecognizer:longPressGesture];
しかし
-(void)handleLongPress
ほとんど呼ばれません。そして、そうであっても、数回成功した後、再びエラーが発生します。
もう一度:長いジェスチャを処理する必要はありません。アプリがクラッシュしないようにしたいだけです。そしてポイントは、私は特別なことを何もしないということです。クラスを作成しました
@interface NewsViewController: UITableViewController <UISplitViewControllerDelegate, UITableViewDataSource, UITableViewDelegate>
そして今、カスタムサブビューをセルに追加しようとしています。この小さな問題に気付くまでは、すべて問題ありませんでした。
ちなみに、行にコメントすると消えます
[セル addSubview:myCustomCell.view];
しかし、これは私が望むものではありません。ちなみに、私のテーブルは編集可能であってはならないので、
- (BOOL) tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { NO を返します。}
編集を許可しても何も変わりません。ロングタップ→クラッシュ。そして同じメッセージ。
カスタム セルのプロパティに問題がある可能性がありますが、正確にはわかりません。もう 1 つの事実: 私のテーブルは、マスター/ディテール ベースのアプリの詳細ビューです。
提案と注意をありがとう!