I have a table of 10*10 which i have to adjust in my main tableview which contains other data as well. So i decided to put collection view inside my main table view cell to minimise the scrolling.
Everything has went well except when i try to enter data in the text fields of collectionview. As in this case keyboard appear and collectionview adjust it self by moving upward then when they keyboard disappear it never comes back.
The collection view moves up when i put some data in the textfield and try to horizontally scroll it.
Any help please.
Related
Im trying to implement a CollectionView inside my viewController.
And it works just fine.
The problem Im having is that the CollectionView scrolls inside the Parent controller.
I wish to make that if you scroll the collection view - the whole view is scrolled and not just the collection view bit.
I tried disabling scrolling on the Collection View but then nothing is scrolling anymore.
So how would I go about setting the collection view, so that once you scroll on it the whole page scrolls and not just the collection view scrolling inside the parent view controller?
It should be simple, and you've done one right thing already.
Disable scrolling of your collectionView (or tableView, in the future just in case you'll use it, they're basically the same).
Add your collectionView (or tableView) inside a scrollView.
That scrollView is of course in your controller's view.
Make sure every constraints are set properly.
You might need to get the size of your collectionView (say height), and set that height value to the constraint height of your collectionView.
These answers of mine in the past should help you:
https://stackoverflow.com/a/52657995/3231194
https://stackoverflow.com/a/54211275/3231194
https://stackoverflow.com/a/53971539/3231194
Voila. The only scrolling enabled is your scrollView that contains your collectionView (or tableView).
I've got a UITableView ( let it be big table view ) with two cells. The second cell has UITableView inside. I want to scroll down first cell, than, when it hides from screen on top, i want to disable scroll on the big table view and enable scrolling on the second cell with table view. And when the second table view scrolls to top - enable scrolling on big table view. Here is the link to video :
Video
I've implemented it, but with lag - when scrolling of big table finishes, the transition to scrolling of second cell's table isn't smooth. Did anyone implement this before ? Or can you suggest any github help?) Thanks
Here is the problem that I'm facing. I have UITableView inside main view. When user taps menu button, view is added to the view hierarchy of superview, and this view covers all screen, except the menu button. That is I call
[self.view insertSubview:self._menuView belowSubview:self._menuButton]
After user clicks the menu button again I call
[self._menuView removeFromSuperview]
However, after this, the UITableView stops scrolling, actually it scrolls, but just a little, couple of pixels, and then bounces back to the location on which it was before I inserted _menuView. I've monitored the menu hierarchy after inserting and removing the _menuView, it is actually removed, and also there is no view which covers the UITableVIew, so there is no chance that some other view steals touches from UITableView. What can be the problem? Any ideas?
EDIT 1: I've noticed besides not being able to scroll, another strange thing happens. When I show menuView, the tableView is scrolled to top, without animation. (the menuView is half opaque only, so I can see the tableView underneath it)
EDIT 2: I've monitored contentSize and contentOffset of tableView before and after inserting _menuView, the reason for not being able to scroll is that somehow contentSize is being changed.
TABLE VIEW BEFORE INSERTING MENU - contentSize:{Width=320, Height=10519} contentOffset:{X=0, Y=3980}
TABLE VIEW AFTER INSERTING MENU - contentSize:{Width=320, Height=44} contentOffset:{X=0, Y=0}
As You can see, the height is changed to 44 that's why I'm not able to scroll. And Also, as I've said in EDIT 1: tableView is scrolled to top - so as you can see contentOffset is also zeroed. Any ideas why content size changes automatically?
Thanks in advance.
i think there is problem with your tableview frame. right after removing subview, try to set frame of your tableview at its original frame.may this will solve your problem
Content in the UITableView organized automaically and designed only to show cells & header/footer elements. To proper working you should wrap your table into parentView and add your menu to that parentView rather than to the UITableView. You can also try to call reloadData method on table since it can restore the content size of the view.
my view controller has a UITableView and my app is a chatting app where the table loads new chats. so i added a textfield that when pressed it goes over the keyboard so the user can see it. now when the textfield has been moved upwards and a new chat is available and the table view reloads, the textfield drops down to it's original place in which it was positioned and the keyboard is still in it's place as the textfield didn't resign it. How can i prevent the subviews of my view to reset to their original settings when i reload the table view?
Edit: the textfield isn't added to a cell. The view has a UITableView that i resized to keep space for the textfield in the bottom.
Unless you have done it already I suggest to have a regular view with a regular UIViewController as "host". Within that you have the textfiled and what ever else may be needed. And you have a container view where the Table View should reside. Within that container you nest your UITableView and its controler. By doing so reloading and other table manipulation tasks (like adding or deleting cells ect) cannot influence the layout of the hosting view.
If your app is a chatting app, I suppose you have your answering field at the end of your UITableView.
So just add a footer to it, containing your field.
Resizing the footer shouldn't mess up your all cells.
tableView.tableFooterView = ...
Then you don't need to resize your table since the field is part of it (it's in the scrollview of your tableview)
I have a rather large table header view above my table view. I have a number of subviews in that header view. I am doing something a bit nonstandard where I am "sticking" some of those subviews (but not all) at the top of the table view.
My problem is that although visually the table view cells pass under the sticky table header subviews, it seems that the table view cells are "above" the table header view in terms of touch response. (For example: I have a button that is a subview of the table header view. When there are no cells underneath the button, the button works great and responds to touches. However, when the user scrolls the table view so that there are cells underneath the button, a touch on the button actually selects a hidden cell rather than push the button.) Can anyone give advice on how to "raise" the table header view above the table view cells, so that its subviews get first shot at touch handling?
I am using a table header view rather than a section header view due to the fact that I only want some of the subviews to stick (letting the others scroll up off the screen as usual). One of the subviews also can be expanded (and that expansion is animated) - to a height that is even bigger than the entire height of the screen. For these reasons, I didn't think using a section header view would be feasible. (If it is, please let me know, as I know that section header views are "above" table cells when it comes to touch response.)
You may try this, which would keep the desired header view on top of the others.
[yourView bringSubviewToFront:yourSubView];
This may be able to help as well:
http://www.iphonedevsdk.com/forum/iphone-sdk-development/5222-keeping-subview-front.html
Is this what you were looking for or did you want another approach?