Unity inputfield 实现显示 隐藏密码功能(在安卓中切换不打开下虚拟键盘)

乍一看实现这个功能很简单,不就是切换一个inputfield的输入类型,将其换做password就可以了嘛。

 public void ToggleClick(bool isShow)
    {
        input.contentType = isShow ? InputField.ContentType.Standard : InputField.ContentType.Password;
        input.Select();//重新选择
    }

这里有一个问题就是,如果不加select()。这个方法的话,inputfiled不会刷新。但是上面的代码在android端运行时,就会出现,点击了显示密码按钮后,虚拟键盘也弹出来了。因为select看名字就知道是一个选择按钮,选择后,当然就会弹出虚拟键盘了。
那么如何才能刷新内容,并且不弹出虚拟键盘呢?
既然没有公开的刷新方法,那我们就继承inputfield自己写一个好了。然后查看了一下源码,果然发现有一个私有的UpdateLabel方法,看了一下具体实现,果然就是刷新显示框。
将inputfiled换成自己的。

public class CanHideInputField : InputField
{
    public void MyUpdateLabel()
    {
        this.UpdateLabel();
    }
}

调用

   if (field.inputType == InputField.InputType.Password)
        {
            field.inputType = InputField.InputType.Standard;
        }
        else
        {
            field.inputType = InputField.InputType.Password;
        }
field.MyUpdateLabel();

很简单啦。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AI阅读 16,032评论 3 119
  • 我不知道,我的人生什么时候落下帷幕。却是知道,截至目前,一事无成。总以为,明天以后还有明天,却浑然不觉,三十而立,...
    千木羽阅读 182评论 0 4
  • 想必大家都对自动释放池实现原理都有了大致的了解了吧,这篇文章不再对实现细节做过多的讲解,只记录大家不太了解的东西。...
    Scott丶Wang阅读 170评论 0 0
  • 在分析—件事情值不值得去做、花多少精力去做的时候,可以从两个角度来评估:—是这件事在当下将给“我"带来的收益大小,...
    Fly_Catkin阅读 200评论 0 0