首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >当键盘被隐藏时,Xamarin窗体按后不做任何操作。

当键盘被隐藏时,Xamarin窗体按后不做任何操作。
EN

Stack Overflow用户
提问于 2018-07-25 00:03:24
回答 2查看 982关注 0票数 2

我正在编写一个Xamarin应用程序(.net标准2.0)。目前,它只为Android开发,但将来可能会发布给其他操作系统。我想要处理的情况是:

  • 用户进入带有单个条目的ContentPage
  • 我通过在自定义呈现程序中使用本机Android代码来提供条目焦点: 如果(e.NewElement != null & e.NewElement is CustomEntry) { CustomEntry customEntry = (CustomEntry)e.NewElement;if(customEntry.GiveFocus) {//这会扰乱onback行为-您必须按onback两次才能退出屏幕,一次是为了退出隐藏的SIPControl.RequestFocus();}}
  • 我不希望软键盘自动弹出。因此,我在OnCreate of MainActivity中添加了以下一行: Window.SetSoftInputMode(SoftInput.StateAlwaysHidden);

我在自定义呈现器中请求焦点,而不是在Xamarin窗体条目中请求焦点,原因是我可以看到键盘弹出,然后在Xamarin Forms控件中请求它时立即消失。我不希望键盘出现,因为这个应用程序将主要用于工业设备的用户使用硬件键盘,但该条目将需要有重点,因为用户会想要立即输入文本。

我的问题是,在这个场景中,用户必须按两次后退按钮才能退出ContentPage。一次离开隐藏的键盘(条目失去焦点),然后再次退出页面。我想避免这一点-他们应该能够退出的网页,只有一次点击时,键盘是隐藏的。有人知道怎么解决这个问题吗?正如其他答案所示,我尝试过在自定义呈现器中重写OnKeyPreIme,但它似乎没有检测到回击。

EN

回答 2

Stack Overflow用户

发布于 2018-07-25 21:39:59

当你的条目聚焦时,你可以使用隐藏键盘方法。也许能解决你的问题。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public interface IKeyboardHelper
{
    void HideKeyboard();
}

对于Android的使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public class DroidKeyboardHelper : IKeyboardHelper
{
    public void HideKeyboard()
    {
        var context = Forms.Context;
        var inputMethodManager = context.GetSystemService(Context.InputMethodService) as InputMethodManager;
        if (inputMethodManager != null && context is Activity)
        {
            var activity = context as Activity;
            var token = activity.CurrentFocus?.WindowToken;
            inputMethodManager.HideSoftInputFromWindow(token, HideSoftInputFlags.None);

            activity.Window.DecorView.ClearFocus();
        }
    }
}

对于iOS:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public class iOSKeyboardHelper : IKeyboardHelper
{
    public void HideKeyboard()
    {
        UIApplication.SharedApplication.KeyWindow.EndEditing(true);
    }
}

使用Dependency Injection并在条目聚焦时调用此方法。

尝试使用下面的方法来处理按下的回按钮事件。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 protected override bool OnBackButtonPressed()
    {          
        // you can handle back button pressed event in Xamarin forms page  
        return base.OnBackButtonPressed();
    }
票数 0
EN

Stack Overflow用户

发布于 2018-09-17 02:49:31

我(终于)想出了办法。关键不是覆盖OnKeyPreIME,而是DispatchKeyEventPreIme。这让你可以拦截‘背面’的新闻。因此,在我的CustomRenderer中,我添加了以下方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 public override bool DispatchKeyEventPreIme(KeyEvent e)
    {
        //if this is back press and the sip is not visible then we need to call the 'OnBack' method at the view model level
        if(!SIPVisibleListener.IsSIPVisible && e.KeyCode == Keycode.Back)
        {
           if(XamarinFormsControl != null && XamarinFormsControl is IOnBackHandler)
            {
                ((IOnBackHandler)XamarinFormsControl).GoBack();
            }
        }

        return base.DispatchKeyEventPreIme(e);
    }

IOnBackHandler是我为处理后键按下而创建的一个接口。SIPVisibleListener是基于对这个问题的回答:How do I Detect if Software Keyboard is Visible on Android Device?希望这能帮助到某人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51513794

复制
相关文章
当selenium被识别爬虫后
因为某站发版,在修一个以前的项目,用Selenium驱动Chrome来做的,然后在某页面需要点击,无论怎么做都失效,我尝试过如下方法:
小歪
2018/12/11
5.1K2
IOS隐藏键盘
1、UIWebView加载网页后,点击网页内的链接在UIWebView内进行跳转时,键盘自动弹起;
meteoric
2018/11/19
1.3K0
Textarea输入框失去焦点时隐藏手机键盘
今天在做公司年会的手机端上墙页面,发现在输入完成后,点击输入框以外的任何区域,键盘收起输入框没有自动回弹。
越陌度阡
2020/11/26
2.6K0
Android 隐藏显示键盘
版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/49105161
Hankkin
2018/09/06
1.9K0
使用UITextFieldDelegate来隐藏键盘
在iPhone界面上,时常会需要当用户输入完内容后,隐藏键盘。 当然有很多方法,今天只介绍使用UITextFieldDelegate这个协议实现隐藏键盘。
EltonZheng
2021/01/22
7150
iOS隐藏键盘的代码
当前视图上有多个uitextfield时,来隐藏键盘, 先遍历视图的所有子视图来 如果是UITextField就将其设为非第一响应 当然,如果要隐藏子视图上的UITextField的话可以进一步判断view的subviews的个数,如果大于1则遍历view的子视图,然后作类似操作
用户8671053
2021/10/31
1.3K0
android隐藏软键盘
聪明出于勤奋,天才在于积累。——华罗庚 代码 /** * 隐藏软键盘 在dialog的编辑界面时 */ public static void hideSoftKeyboard(Activity activity, View view) { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Activity.INPUT_METHOD_SERVICE); in
阿超
2022/08/16
9750
使用 Xamarin 开发 iOS 键盘扩展(含网络访问)
作为一位 .NET 技术的死忠,开发 iOS 应用当然要使用 Xamarin 啦!
walterlv
2020/02/10
2.2K0
当元宇宙遇上招聘,后疫情时代下隐藏的商机?
(VRPinea 11月19日讯)脸书更名为Meta后,元宇宙的概念越发火爆,除了大量头部企业纷纷开始布局元宇宙,也有一部分人从中嗅到了商机。元宇宙的“火”开始从游戏行业延伸到了其他领域。
VRPinea
2021/11/23
7360
Android点击EditText文本框之外任何地方隐藏键盘的解决办法
1,实现方法一:通过给当前界面布局文件的父layout设置点击事件(相当于给整个Activity设置点击事件),在事件里进行键盘隐藏 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/traceroute_rootview" android:layout_width="fill_parent" android:layout_height="fi
庞小明
2018/03/07
1.6K0
android 完美隐藏软键盘
public void hideSoftInput(Activity activity) { // 关闭软键盘 if (activity.getCurrentFocus() != null) { if (activity.getCurrentFocus().getWindowToken() != null) { InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(
再见孙悟空_
2023/02/10
8340
当被监测的进程异常退出后,如何启动 - WGCLOUD
那么我们如何在进程退出后,怎么启动进程呢?以下三种方式均为WGCLOUD提供的功能
那年十八
2022/10/22
1.6K0
当被监测的进程异常退出后,如何启动 - WGCLOUD
当一个程序员飞速敲键盘时,他在干嘛?
本文原创公众号:不会笑青年,授权转载请联系微信(laughyouth369),授权后,请在原创发表48小时后再转载。
刘小夕
2020/10/22
6070
当一个程序员飞速敲键盘时,他在干嘛?
AndroidMainifest标签说明2——&lt;activity&gt;
每个Activity必须被声明在mainifest文件里,没有被声明的Activity别系统视为不可见,不会被系统调用。
全栈程序员站长
2022/07/06
1.5K0
使用JS监听键盘按下事件
altKey、ctrlKey、shiftKey:当组合按下(如ctrl+c)时,ctrlKey会变为true
超级小的大杯柠檬水
2023/05/06
11.5K0
使用JS监听键盘按下事件
IOS系统input输入框为readonly时, 隐藏键盘上的上下箭头
业务中在一定场景中会将input 设置为只读状态,在IOS safari上当input 输入框focus 时,仍会出现键盘上的上下箭头,这种用户体验非常不好,如何干掉呢?
Daotin
2019/08/12
2.1K0
Android点击其他地方隐藏键盘
Android点击其他地方隐藏键盘 1.第一种:隐藏页面一进来EditText获取焦点就弹出软键盘 在oncreate()里调用如下方法即可 /** * 隐藏软键盘 */ private void hideSoftKeyBoard() { getWindow().setSoftInputMode( WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
程序员飞飞
2020/02/27
3.3K0
Visual Studio 2008 每日提示(一)
Visual Studio 2008 每日提示(tip of day )是2007年7月Sara Ford在她的博客里推出了VS 2008每日提示系列,里面收集了许多使用VS 2008技巧和诀窍,截至到今天(2008年11月30日)已经有367条了。我把这些技巧翻译、整理,并给出自己的评论,分享给vs2008的使用者。每篇10个tips ,争取和原作者同步。微软的Visual Studio 2008功能越来越强大了,通过这个提示系列的,也许你会发现一些隐藏的功能。 #001、 强大的渐进式搜索 原文地址:
Jianbo
2018/03/01
1.5K0
点击加载更多

相似问题

当条目集中在xamarin窗体中时如何隐藏键盘

29

Xamarin窗体:在xamarin窗体IOS中单击背景时,键盘不隐藏。

10

Android -当键盘的搜索按钮被按下时如何隐藏键盘?

11

在xamarin窗体中单击按钮时隐藏键盘

04

当键盘可见时,Xamarin窗体视图不滚动

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文