私はiPhoneの6のUITableViewController
にいくつかのテスト3D Touch
機能を追加しました。一般的には正常に動作しますが、いくつかの2つの問題を観察することができました。何が起きているのか、それをどのように修正するのかは分かりません。3DタッチとUITableViewCell
1)セルが選択可能なので、ユーザーはそれを押すか「3Dタッチ」を使用できます。問題は、「Pop」と「Peek」をUITableViewCell
に使用すると選択され、通常の方法でsetSelected:
またはsetHighlighted:
のメソッドを使用して選択解除できないということです。 previewingContext:commitViewController
のpresentViewController
完了でも、別の場所でそれを選択解除しようとしました。彼らは何もせず、細胞はまだ選択状態にとどまっています。私は選択されたセルを取り出しましたreviewingContext.sourceView
と私の選択したセルを与えた他の一時コードを呼び出して、これらのメソッドは動作しませんでした。
- そこで質問は、ユーザーがそれに「ポップ」のプレスを適用し、セルの選択を解除する(またはより良い無しを選択する)通常の方法は何ですか?
2)また、私は時々、私はジェスチャーを「ポップ」とpreviewingContext:viewControllerForLocation
方法がさえ呼び出されなかったとき(初期状態にセルを持参キャンセルする場合)私のUIだけでハングアップし、まったくタッチに反応しないことに気づきました。私はそれを動作させるために殺す必要があります。非常に奇妙に思えますが、私はこれをチェックしましたTutorial。それは言及された問題なしで素晴らしい作品が、彼らはセルにではなく、デリゲートを登録しますが、UITableView
で "ポップ"ジェスチャーは、tableView全体を強調表示しかし、セルではない。
- ここで間違いがありますか? ここ
は、私が事前にUIViewControllerPreviewingDelegate
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCellWithIdentifier("SomeDemoID",
forIndexPath: indexPath) as! UITableViewCell
// Some cell configuration
if #available(iOS 9.0, *) {
if traitCollection.forceTouchCapability == .Available {
self.registerForPreviewingWithDelegate(self, sourceView: cell)
}
} else { // Fallback on earlier versions}
return cell;
}
// MARK: - UIViewControllerPreviewingDelegate
func previewingContext(previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController?
{
// Just Test View Controller
return UIViewController(nibName: nil, bundle: nil)
}
func previewingContext(previewingContext: UIViewControllerPreviewing, commitViewController viewControllerToCommit: UIViewController)
{
self.presentViewController(viewControllerToCommit, animated: true, completion: nil)
}
おかげに準拠して私のテストUITableViewController
で3D touchを実装する方法です!