私はObjective CアプリケーションにUITablaView
を持っています。ラベルが付いたカスタムセルとUIImageView
があります。私は、行の一部を無効にして、ユーザーがこの行の部分をクリックするとdidSelectRowAtIndexPath
を無効にしたいとします。UITableViewの行の一部でdidSelectRowAtIndexPathを無効にすることはできますか?
私はこれ欲しい:
が、それは可能ですか?
私はObjective CアプリケーションにUITablaView
を持っています。ラベルが付いたカスタムセルとUIImageView
があります。私は、行の一部を無効にして、ユーザーがこの行の部分をクリックするとdidSelectRowAtIndexPath
を無効にしたいとします。UITableViewの行の一部でdidSelectRowAtIndexPathを無効にすることはできますか?
私はこれ欲しい:
が、それは可能ですか?
この問題を解決するには、選択を無効にする部分をカバーするボタンを追加することで、この問題を解決することができます(コードを書く必要はありません)。明らかに、ボタンにはテキストや背景色(クリアカラーでなければなりません)を持たないようにしてください。また、セルの必要な部分が確実に覆われていることを確認するための適切な制約を必ず加えてください。
ボタンをタップすると何も起こりません。実際のタッチイベントは行ではなくボタンに参照されるため、didselectRow
は呼び出されません。
これが役に立った。
私が考えることができる、シンプルで洗練されたソリューションです。あなたのCustomCellで
私はあなたがあなたがあなたの問題を解決するためにhitTest
方法を利用することができます:)左側のImageViewのにIBOutletを保持しているCustomCellを有するされなければならないと考えている:)
をすることとさせて頂きますMyTestCellクラスは、これを書い
override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
if self.myImageView.frame.contains(point) {
return nil
}
return super.hitTest(point, with: event)
}
myImageViewがあなたのセル:)すべてはユーザーのタップをしたところチェックしてやっている
の左側にImageViewののIBOuletある
、タッチポイントは内にある場合フレームo f cell image viewあなたはビューとしてnilを返します。あなたがnilを返すと、親ビューにイベントが停止し、最終的にはセルに到達しません。
一方、次のビューにタッチする必要があります。 super
iOSのは、最終的にセルに戻ってそれをトレースし、
didSelectRowAtIndexPath
はそれが役立ちます:)あなたは、単に画像ビューwidth constraints to 0
を変更することがあります
ホープトリガされます。あなたが行動したい場所が実行されます。例:
1)イメージをカバーするボタンを使用する場合。
2)ナビゲーションバーを使用するとボタンが表示され、操作が実行されます。
これが役に立ちます。
これは非常に簡単なトリックです プロフィール画像の部分にボタンを追加すると、画像のように赤い部分に表示されます(あなたが提供)。ボタンをクリックしてクリックしないでください。
ハッピーコーディング!!!!
ボタンを緑の領域に置き、ボタンごとにタグを設定するだけです。 Onclickでは、タグを使用して機能を実行できます。あなたは
もう一つの方法は、あなたのfunctionlity peformことができ、この
func tableView(tableView: UITableView,cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let obj: AnyObject = self.dataList.objectAtIndex(indexPath.row);
cell?.populateCellWithData(obj, indexPath: indexPath)
cell?.destinationLabel.userInteractionEnabled = true
let destRecognizer : UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "DestLabelTapped:")
destRecognizer.numberOfTapsRequired = 1
destRecognizer.delegate = self
cell?.destinationLabel.addGestureRecognizer(destRecognizer)
}
の内側とDestLabelTappedのよう はわずか2テーブルビューを設定し、側面と一つのテーブルでそれらをサイドスクロール選択可能であり、別ではありません。
私の理解では、コンテンツをカバーするボタンや他のUIElementsのトリックは、ターゲットを解決する正しい方法ではありません。ストーリーボードで追加の操作が必要になるため、コンテンツを動的に作成する必要がある場合は、コンテンツや人工的なカバーを制御する必要がある場合など、さまざまな状況で作業する必要があります。
UITableView
選択第二部No Selection
に入れて、あなたがUIView
でアクティブにする:行うにはいくつかあります。このUIViewはコンテンツコンテナになります。はあなたが必要なすべてを行うことができますどこIBAction
を追加UITapGestureRecognizer
UITapGestureRecognizer * tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectCellAction:)];
のUIViewへを追加します。
- (IBAction)selectCellAction:(id)sender
{
// do what you need
}
そして、すべてのthats。
ボタンを画像に重ねることで、後で機能を実行する必要がある場合にも、セルとセットタグをカバーできます。 – vaibhav
片方向です:selectメソッドを使用する必要はありません。あなたが望む地域にボタンを置いて、それにアクションを与えてください。 – Amanpreet
@ user3745888:動作している場合、回答を受け入れることを検討してください。 –