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;
		
		}

搞定!!






版权声明:本文为博主原创文章,未经博主允许不得转载。

​Xamarin iOS教程之自定义视图

​Xamarin iOS教程
  • u014621518
  • u014621518
  • 2015年06月24日 10:19
  • 816

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

滑动视图上实现图片(视图)的缩放功能:用到两个滑动视图
  • Vivian_Zy
  • Vivian_Zy
  • 2016年12月05日 13:46
  • 439

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

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

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

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

点击效果,给 UIButton UIView UIScrollView 加一个灰色的点击效果

如果要给button 或者是label 增加点击效果,那么可以这么做         btnCurrentHot.frame=CGRectMake(60+sizeWeight+offSet, 2...
  • amy376X
  • amy376X
  • 2013年10月17日 10:31
  • 2942

UIView 透明 , 事件向下传递

如图: 悬浮的三个按钮下方有一个可以点击的灰色区域,但是点击按钮之间的透明区域, 这三个按钮的contentView会响应这个点击事件,这时候需要让这个contentView不响应这个点击...
  • u014600626
  • u014600626
  • 2017年01月06日 17:24
  • 748

点击按钮后背景变灰+阻止事件

最近做了几个点击按钮出现弹出框后,背景变灰且不可操作
  • gmd_web
  • gmd_web
  • 2015年10月30日 14:35
  • 2717

iOS实现UIImageView透明区域点击事件穿透(OC&swift)

问题 最近要在iPad上实现一个很独特的功能,简单描述一下就是要显示一个带有半透明背景的弹出界面,在其上加一个不规则形状的图片,手指点击这个弹出界面的半透明区域就退出这个弹出界面。 问题是UED/...
  • songchunmin_
  • songchunmin_
  • 2016年04月25日 20:59
  • 1472

通过UIView来模拟 实现 Button的点击效果

首先建立根视图在根视图上实现以下功能: 通过MyButton 实现 button的点击效果 首先建立一个类:MyButton这个类1.在MyButton.h文件中写一个自定义的方法,把目标和对应的...
  • MLtianya
  • MLtianya
  • 2015年08月04日 20:43
  • 846

Cocos2d-x中让CCSprite变灰(Gray)的简单办法

原文地址:http://blog.csdn.net/u012940116/article/details/17003841 之前一直做flash开发,像变灰,高亮,描边了这些效果非常容易实现,有...
  • whuancai
  • whuancai
  • 2013年11月30日 11:36
  • 10130
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Xamarin.iOS 点击UIView整体变透明(包括子控件)问题
举报原因:
原因补充:

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