Я добавил несколько тестов 3D Touch
на UITableViewController
на iPhone 6s. В общем, он работает нормально, но я смог наблюдать некоторые 2 проблемы, и я не уверен, что происходит, и как это исправлять обычным способом.3D Touch и UITableViewCell
1) Моя ячейка выбирается, поэтому пользователь может нажать на нее или использовать «3D Touch». Проблема в том, что когда я использую «Pop» и «Peek» для UITableViewCell
, он выбирается, и я не могу отменить выбор обычным способом, используя методы setSelected:
или setHighlighted:
. Я попытался отменить его в разных местах, даже в previewingContext:commitViewController
в presentViewController
завершение. Они просто ничего не делают, и клетки все еще остаются в выбранном состоянии. Я получил выбранную ячейку, вызвав reviewingContext.sourceView
и другой временный код, который дал мне выбранную ячейку, но эти методы не сработали.
- Таким образом, вопрос есть нормальный способ, чтобы отменить (или лучше не выбирать) ячейки, когда пользователь применяется «Pop», нажмите на нее?
2) Я также заметил, что иногда, когда я отменяю «Pop» жест и принести клетку в исходное состоянии (когда previewingContext:viewControllerForLocation
метод не был даже называется) мой UI просто зависает и не реагирует на прикосновения на все , Мне нужно убить, чтобы он работал. Кажется очень странным, я проверил это Tutorial. Он отлично работает, без упомянутых проблем, но они регистрируют делегат не в ячейке, а на UITableView
, поэтому жест «Поп» выделяет весь tableView, но не ячейку.
- Любые мысли и что может быть неправильным здесь?
Вот как я реализовал 3D контакт в моем тесте UITableViewController
который соответствует 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)
}
Спасибо заранее!