Bug 16887 - Touch not responding on UITabBarController
Summary: Touch not responding on UITabBarController
Status: VERIFIED UPSTREAM
Alias: None
Product: iOS
Classification: Xamarin
Component: General ()
Version: 7.0.2.x
Hardware: Macintosh Mac OS
: --- normal
Target Milestone: Untriaged
Assignee: Bugzilla
URL:
Depends on:
Blocks:
 
Reported: 2013-12-18 22:28 UTC by Jon Goldberger [MSFT]
Modified: 2013-12-23 23:55 UTC (History)
1 user (show)

Tags:
Is this bug a regression?: ---
Last known good build:


Attachments
test project (63.93 KB, application/zip)
2013-12-18 22:28 UTC, Jon Goldberger [MSFT]
Details
test project with workaround (66.13 KB, application/zip)
2013-12-18 22:31 UTC, Jon Goldberger [MSFT]
Details


Notice (2018-05-24): bugzilla.xamarin.com is now in read-only mode.

Please join us on Visual Studio Developer Community and in the Xamarin and Mono organizations on GitHub to continue tracking issues. Bugzilla will remain available for reference in read-only mode. We will continue to work on open Bugzilla bugs, copy them to the new locations as needed for follow-up, and add the new items under Related Links.

Our sincere thanks to everyone who has contributed on this bug tracker over the years. Thanks also for your understanding as we make these adjustments and improvements for the future.


Please create a new report on Developer Community or GitHub with your current version information, steps to reproduce, and relevant error messages or log files if you are hitting an issue that looks similar to this resolved bug and you do not yet see a matching new report.

Related Links:
Status:
VERIFIED UPSTREAM

Comment 1 Jon Goldberger [MSFT] 2013-12-18 22:30:37 UTC
I am creating a UITabBarController programally with orientation landscape,
in my AppDelegate the RootViewController is my UITabBarController [correction, the root view controller is a UINavigationController], when the
application finished launching, I can't touch in the side right of the
screen, I think that application is on portrait, because the part that not
responding the touch is the difference between portrait and landscape.

-----------------------------------------------------------------

Hi, this is my computer information, and the example, I hope can you help
me, I need switch of tab for press the button log off, in the first tab
never can touch the button

https://www.dropbox.com/s/3njymrfmi0sjlf7/Application.zip [attached to bug report as test project]

=== Xamarin Studio ===

Version 4.2.2 (build 2)
Installation UUID: 073504fa-38f0-45b7-83e3-99d8aee71fd6
Runtime:
Mono 3.2.5 ((no/964e8f0)
GTK+ 2.24.20 theme: Raleigh
GTK# (2.12.0.0)
Package version: 302050000

=== Apple Developer Tools ===

Xcode 5.0 (3332.25)
Build 5A1413

=== Xamarin.Mac ===

Xamarin.Mac: Not Installed

=== Xamarin.Android ===

Not Installed

=== Xamarin.iOS ===

Version: 7.0.4.209 (Business Edition)
Hash: 23a0827
Branch:
Build date: 2013-11-11 16:04:00-0500

=== Build Information ===

Release ID: 402020002
Git revision: c5f82958ae7d9af652b44b87ceff777b3ad19b91
Build date: 2013-11-19 15:35:40+0000
Xamarin addins: a4044fee09138f6fd031a9944b7caaeb51e57e80

=== Operating System ===

Mac OS X 10.9.0
Darwin iMac-de-juan.local 13.0.0 Darwin Kernel Version 13.0.0
Thu Sep 19 22:22:27 PDT 2013
root:xnu-2422.1.72~6/RELEASE_X86_64 x86_64
Comment 2 Jon Goldberger [MSFT] 2013-12-18 22:31:06 UTC
Created attachment 5699 [details]
test project with workaround
Comment 5 Jon Goldberger [MSFT] 2013-12-23 23:48:00 UTC
Discovered more about this. Ran into the bug again working on my own project.
This apparently is an Apple bug:
http://stackoverflow.com/questions/19156979/ios7-setting-selectedindex-of-uitabbarcontroller-breaks-touch-events-along-rig
See the selected answer.

Workaround: Subclass UITabBarController and override ViewDidLayoutSubViews:

public partial class TabBarController : UITabBarController
{
	public TabBarController() : base("TabBarController", null)
	{
	}

	public override void ViewDidLayoutSubviews()
	{
		base.ViewDidLayoutSubviews();
		// fix for iOS7 bug in UITabBarController
		this.SelectedViewController.View.Superview.Frame = this.View.Bounds;
	}
}

this corrects the incorrectly sized UIViewControllerWrapperView.