Xamarin.iOS 点击UIView整体变透明(包括子控件)问题

原创 2016年12月06日 17:36:14

今天遇到一个奇葩的BUG,当我写了一些控件Add到一个UIView中。

运行后,在界面上点击其中的控件没有问题,但是我点击UIView空白区域时,整个UIView都变透明了,包括其中的子控件也透明了。

我猜测应该是默认的选中效果。

第一种:针对UIView中控件不需要点击事件

给UIView添加一个空的点击事件,代码如下:

uiView.AddGestureRecognizer(new UIGestureRecognizer());

运行后发现果然点击空白不会透明了,但是其中的子控件的点击事件也被屏蔽掉了。

第二种:针对一个初始界面可以显示完全的情况

出现这个问题的原因就是继承了MvxDialogViewController这个基类。所以一种方式是继承的基类换成MvxViewController。另一种方式是,我们自己写的一些view添加到Root中显示,那么我们添加的这些View作为了MvxDialogViewController中的TableView的Cell出现。框架默认的选中的style是点击后变透明,所以出现了这个bug。

解决方法:在添加完Root后遍历每一个Cell,设置他们选中的style即可,如下:

public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            TableView.SeparatorStyle = UITableViewCellSeparatorStyle.None;
            Root = (RootElement)GetRoot();

            //循环去掉选中效果
            var cell = Root.TableView.VisibleCells[0];
            cell.SelectionStyle = UITableViewCellSelectionStyle.None;
            var cell1 = Root.TableView.VisibleCells[1];
            cell1.SelectionStyle = UITableViewCellSelectionStyle.None;
            var cell2 = Root.TableView.VisibleCells[2];
            cell2.SelectionStyle = UITableViewCellSelectionStyle.None;
        }

这种方式呢,从方法字面意思上可以理解出,去掉的是正在显示在界面内的View的点击效果。当我们界面足够长,初始的界面显示不完的时候,那么,下面的一些UIView的点击效果还是会透明。

第三种:针对界面足够长,也是醉好的一种解决方式

其实这篇博客一开始只有上面两种解决方式,在我开发一段时间之后,测试自己的界面时,用了上面第二种方式的界面,拉到最下面还是会出现点击透明的问题。于是经过再一次尝试,写出本解决方法。

上面提到了,继承了MvxDialogViewController后,我们添加到Root中的View作为一个Cell出现,即可以把MvxDialogViewController当成是一个UI tableView(其实他就是!因为继承了它以后要设置UITableViewStyle)。那么UITableView中有Select方法,可以设置选中的行,MvxDialogViewController肯定也有。于是试着找了一下,真的有。于是复写下面Select方法,回调点击的参数:

public override void Selected(Foundation.NSIndexPath indexPath)
		{
			base.Selected(indexPath);

			// 根据点击的indexPath去掉选中效果
			Root.TableView.CellAt(indexPath).SelectionStyle = UITableViewCellSelectionStyle.None;
		
		}

搞定!!






版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/geanwen/article/details/53489789

自定义控件——继承已有控件

-
  • 1970年01月01日 08:00

Unity教程之- UGUI分页效果的实现

今天想和大家分享的是uGUI中分页效果的实现,我们知道相对NGUI来说uGUI在功能覆盖上来讲,它并没有像NGUI那样提供较为丰富和炫酷的组件,可是因为uGUI有着较好的扩展性,因此我们可以通过编写脚...
  • andyhebear
  • andyhebear
  • 2016-01-08 09:26:30
  • 3144

Xamarin.iOS滑动视图上图片(视图)的缩放(双击手势实现缩放)

滑动视图上实现图片(视图)的缩放功能:用到两个滑动视图
  • Vivian_Zy
  • Vivian_Zy
  • 2016-12-05 13:46:01
  • 520

Xamarin.iOS启动图片过渡及广告展示

1.实现效果 启动应用时,启动图片自然过渡到广告图片中(外加基本动画【波纹及上翻页】),如:...
  • dengzhaowensky
  • dengzhaowensky
  • 2014-10-28 17:10:44
  • 1554

Xamarin.iOS UIView的透明动画

Xamarin.iOS透明度的动画
  • geanwen
  • geanwen
  • 2017-01-07 20:36:25
  • 786

Xamarin.iOS 文件的创建与读取

Xamarin.iOS文件的创建与读取
  • geanwen
  • geanwen
  • 2017-01-09 11:01:12
  • 1450

Xamarin体验:使用C#开发iOS/Android应用

http://www.cnblogs.com/lwme/p/use-xamarin-develop-android-ios-app.html Xamarin是Mono创始人Miguel de I...
  • lanshengsheng2012
  • lanshengsheng2012
  • 2014-01-22 11:02:16
  • 33499

Xamarin演练:绑定一个Objective-C类库

Xamarin演练:绑定一个Objective-C类库 使用Objective-Sharpie绑定现有Objective-C类库 本文提供一个手把手的练习,通过Xamarin.iOS绑定(Bindin...
  • gt7466
  • gt7466
  • 2015-11-04 16:37:03
  • 2449

xamarin.ios 代码中设置启动的 Storyboard

public override bool FinishedLaunching (UIApplication application, NSDictionary launchOptions) { W...
  • mendeliangyang
  • mendeliangyang
  • 2014-09-03 16:43:42
  • 1219

Xamarin for iOS 11(一) - 初尝ARKit

Xamarin for iOS 11@ARKit
  • u014388424
  • u014388424
  • 2017-07-28 22:46:14
  • 1301
收藏助手
不良信息举报
您举报文章:Xamarin.iOS 点击UIView整体变透明(包括子控件)问题
举报原因:
原因补充:

(最多只允许输入30个字)