Alessandro Alessandro - 2 months ago 73
Swift Question

UITableView inside UIScrollView - Cell not clickable

I have a problem with a UITableView not detecting touches.

In an iPhone-only app, I have a UIViewController, which containts:


  • UIScrollView


    • UIView (let's say a content view)


      • Some labels

      • UITableView (last)





The labels have a dynamic height, because they contain some text that I must retrive from the web, so I'm using auto layout.
I'm setting the content size of the UIScrollView inside the
viewDidLayoutSubviews
method, and I'm doing this by summing
UITableView.frame.origin.y
and its height.

Here comes the problem: when the labels contain only some words and the UITableView does not exceed the iPhone screen size, everything works ok. But when they grow, and the UITableView gets pushed down, when I scroll down I can't click on the cell anymore. Also, if when loading the view the table is half visible and half not, I can click the visible cells, but if I scroll down, I can't click the others.

I'm using swift 2 and Xcode 7.

Here is an example:

Clickable:

enter image description here

Unclickable:

enter image description here

Answer

Do the following thing:

yourView.clipToBounds = true

Now, if UITableView does not appears means your UIView is not same bigger to hold down UITableView.

Make sure that your UIView height is bigger to hold the contents in it and then try to tap on it.

Updated:

If you are using AutoLayout, then do the following thing.

  1. Give the fix height to UIView
  2. Take the outlet of height constraint of UIView
  3. Now, in viewDidLayoutSubviews change the constraint of UIView to UITableView contentSize height.

    self.heightConstraint = self.tableView.contentSize.height

Let me know, if this helps!

Comments