在 Angular 中页面加载(模态显示)后焦点输入后在 Safari iOS 中显示键盘

2024-02-02

我需要在页面加载或显示输入模式后设置焦点并打开键盘。

简单的 .focus() 适用于 Android 以及 iPad 的横向模式。 然而,在纵向模式和 iPhone 上,焦点已设置,但未显示键盘。

我还尝试了添加并关注附加元素的解决方案,但它不适用于 Angular。 (iOS 在输入焦点上显示键盘 https://stackoverflow.com/questions/54424729/ios-show-keyboard-on-input-focus)

@ViewChild('searchBarInput') searchBarInput: ElementRef;

  ngAfterViewInit(): void {
    setTimeout(()=> {
      this.searchBarInput.nativeElement.focus();
      this.searchBarInput.nativeElement.click();
    },180);
  }

测试应用:https://inputfocus.vercel.app/ https://inputfocus.vercel.app/

期望是在页面加载并设置焦点后,用户可以开始打字。 它是简化版本 - 我需要在模态上使用它,但 iOS 上的行为是相似的


我想我找到了解决方案。 在 iOS (iphone) 和 iPad 纵向模式下, focus() 需要由用户操作触发。 因此,我们需要在使用显示模态或带有目标输入字段的新 div 的单击按钮后立即进行设置。

我们可以自动创建这个新字段,设置焦点,并在将焦点移动到目标字段后将其删除。

单击按钮时,我们需要创建临时输入,附加到现有容器(靠近我们的输入)并关注它。

  btnClicked() {
      this.showModal = true; 
      
      this.searchBar = this.renderer2.selectRootElement('#searchBar', true);
     // 2nd argument preserves existing content

      // setting helper field and focusing on it
      this.inputHelper = this.renderer2.createElement('input');
      this.renderer2.appendChild(this.searchBar, this.inputHelper);
      this.inputHelper.focus();

      let event = new KeyboardEvent('touchstart',{'bubbles':true});            
      this.searchBarButton.nativeElement.dispatchEvent(event);
  }

显示模态/目标输入后,我们移动焦点并删除临时焦点:

  initiateKeyboard() {       
    setTimeout(()=> {      
      this.searchBarInput.nativeElement.focus();     
      this.renderer2.removeChild(this.searchBar, this.inputHelper);
    },180);
  }

和模板:

<div id="searchBar"> 
  <input type="button" class="button is-link is-light" value="Search" (click)="btnClicked()" (touchstart)="initiateKeyboard()" #searchBarButton>
</div>

您只需要记住,iPhone 可能会缩放屏幕,因此您需要调整临时输入的参数。

工作解决方案:https://inputfocus.vercel.app/ https://inputfocus.vercel.app/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Angular 中页面加载(模态显示)后焦点输入后在 Safari iOS 中显示键盘 的相关文章

  • 在界面生成器/故事板中设置 UIButton 图像

    我有一个视图控制器 我在故事板中添加了一个圆形矩形按钮 该应用程序运行良好 我还使用故事板将按钮连接到 segue 我正在尝试为此按钮设置一个自定义图像以用于其开和关状态 我如何访问此按钮并设置其属性 在本例中为开和关图像 这是一个屏幕截图
  • 如何等待 webViewDidFinishLoad 完成

    我有一个初始化 webView 的布尔条件 并在 webViewDidFinishLoad 中加载另一个委托 以便在完成完成后触发 但是 由于布尔值在条件 webViewDidFinishLoad 之前返回 因此页面永远不会完全加载 如何确
  • iOS 4.2.1 丢失文件?

    这是我第一次使用最新的 xcode 3 2 5 和新的 iOS 4 2 1 当我在设备上运行应用程序时 我收到以下运行时错误 无法读取 Developer Platforms iPhoneOS platform DeviceSupport
  • iOS App布局错误,调用状态栏

    在主动通话和应用程序布局期间面临状态栏问题 我正在使用自动布局 当我运行应用程序 然后开始通话时 一切正常 UI 会随着状态栏的更改而正确缩放 但是 如果我首先开始通话 然后运行应用程序 应用程序屏幕会移动到底部 20pt 就像它们对新状态
  • 使用 jQuery 和 jQuery UI 运行任何 Jest 测试时出现问题

    所以我有一个名为的开源库Angular Slickgrid https github com ghiscoding Angular Slickgrid还没有测试 我正在尝试使用 Jest 但真的很难使用它 该库是旧的 jQuery 数据网格
  • Angular Serverless 部署到 AWS 将 base-href 附加到 url,导致重定向到 404 错误

    我正在尝试将 Angular 7 网站部署到 aws 无服务器上 作为新手 我遵循了本教程 https coursetro com posts code 165 Deploying your Angular App to a Serverl
  • 如何避免在 Rust 中使用标准输入换行

    我有这个代码 fn main let mut stdin io stdin let input mut String new loop input clear print Your age stdin read line input pri
  • iOS 内存警告

    我正在尝试使用从 Parse 数据库下载的图像填充集合视图 但我收到内存警告 然后偶尔崩溃 有谁知道其他应用程序如何设法呈现这么多图像而不崩溃 有人可以告诉我如何优化我已有的东西吗 这是所有相关代码 https gist github co
  • 使用 createReducer 函数时构建用于生产的 Angular+ngrx 8 时出错

    目前我正在尝试使用新的 NgRX 构建 Angular NgRX 8 应用程序creator功能 但是当我构建这个用于生产时 出现以下错误 装饰器中不支持函数调用 但在 reducers 中调用了 createReducer 在开发模式下完
  • 在 angular2 视图模板中传递枚举

    我们可以在 angular2 视图模板中使用枚举吗 div class Dropdown div 传递字符串作为输入 enum DropdownType instrument account currency Component selec
  • Angular 2 - 在(点击)事件中使用管道

    我的问题可能很简单 但只是找不到在事件 例如 单击 中使用管道的方法 像这样的事情
  • Angular - Safari 无法正确显示 DOM

    我是 Angular 的新手 使用 Angular 4 我尝试通过在关联的组件类文件中设置属性来更新特定元素 但是 除非我尝试强制重新绘制网页 通过调整窗口大小等 否则页面不会更新 我打开检查器 看到 DOM 已更改 但显示与元素检查器中的
  • 如何将十六进制数组转换为 UIImage?

    有几个与使用 P25mi 动态打印图像相关的未解答问题 没有一个得到公认的答案 下面有几个链接 如何将图像转换为位图代码以便在 iPhone 中进行蓝牙打印 https stackoverflow com questions 1383828
  • swift 中的负数模

    负数模如何在 swift 中工作 当我执行 1 3 时 它给出 1 但余数是 2 其中有什么问题 雨燕余数运算符 计算余数 整数除法 a b a a b b where 是截断整数除法 在你的情况下 1 3 1 1 3 3 1 0 3 1
  • 未捕获错误:无法使用 angular2-meteor 和 ng-bootstrap 解析 NgbAlert 的所有参数

    我正在使用 Angular 作为前端运行一个流星项目 我似乎无法弄清楚如何让 ng bootstrap ng bootstrap 正确导入到我的项目中 这是我的设置 Meteor 版本 1 6 Angular 版本 5 1 3 ng boo
  • Swift 中 UIImages 的淡入淡出动画

    我有一组图像 我希望它们在登录屏幕的背景中淡出 我无法在 swift 中找到任何可以做到这一点的东西 有什么办法我可以做到吗 这是我当前的代码 override func viewDidLoad super viewDidLoad star
  • 如何使用 afnetworking 在后台上传任务

    我正在尝试使用 AFNetworking 上传大文件 并在应用程序处于后台时继续上传 我可以很好地上传文件 但是当我尝试使用后台配置时 应用程序崩溃并显示以下堆栈跟踪 异常 EXC BAD ACCESS 代码 1 地址 0x8000001f
  • 如何在 ionic2 中 pop() 之后重新加载 ion-page

    我有2页Page1 and Page2 我用过this nav pop 在Page2中 它将弹出Page2 Page1将启用 但我想刷新Page1 先感谢您 您可以将父页面与导航推送一起传递 这样您就可以将父页面作为 navParamter
  • 当设置 setVisibleXRangeMaximum 时,iOS-Charts X 轴值无限重复

    我正在尝试绘制一个图表 其中 x 轴是TimeIntervalY 轴是power consumption 由于每天都会有数据 因此将有太多数据无法显示 因此 我想一次显示 5 个值 我通过设置实现了这一点self chart setVisi
  • 通用类不会将委托调用转发给具体子类

    鉴于以下情况 protocol EntityType var displayString String get extension String EntityType var displayString String return self

随机推荐

  • Visual Studio 2017 xaml 设计器不可用

    使用 Visual Studio Professional 2017 版本 15 2 26430 16 当我打开我开发的桌面 UI 的 xaml 文件时 我无法再看到 xaml 设计器 我只能看到原始 xaml 代码 这是新行为 可能是由于
  • JFrame 上的所有组件均未显示

    我正在创建一个刽子手游戏 想要在框架上有 3 个不同的组件 绞刑架的图片 试图猜测的单词以及字母的按钮 当我尝试将这些组件添加到 JFrame 时 字符被添加到我也想要它们 但是这个词显示在左侧 而 HangmanGallows 扩展 JP
  • MATLAB:在黑白图像上绘制一条线

    如果已知起始坐标和结束坐标 在 MATLAB 中在黑白 二进制 图像上绘制线条的最佳方法是什么 请注意 我并不是想添加注释行 我希望这条线成为图像的一部分 您可能想看看我的答案 https stackoverflow com a 19413
  • 如何确保 CSS :hover 应用于动态添加的元素

    我有一个脚本 当您将鼠标悬停在缩略图上时 它会在缩略图上动态添加完整图像 我还为完整图像提供了 CSS hover 样式 以使它们扩展到更大的宽度 通常它们被限制为缩略图的尺寸 如果图像加载速度很快或被缓存 这种方法效果很好 但如果完整图像
  • 导致 HttpHostConnectException 的原因是什么?

    我在搜索我的网站时具有自动完成 提前输入功能 我发现有时他们是与之相关的例外 我们正在使用代理服务器 org apache http conn HttpHostConnectException Connection to http prox
  • MVC4 HTML TextBoxFor 修改 ViewModel 后不工作

    我有一个我真的不明白的问题 我有一个非常简单的模型 其中有一个列表作为公共成员 每当我的控制器在回发时从模型中删除元素时 TextBoxFor HTML 帮助程序似乎不会接受更改 这些助手似乎正在缓存一些东西 但我无法确定它 演示 重现可以
  • Glassfish vhost 仅提供静态内容。禁用会话如何?

    我在服务器中有一个文件夹 其中包含所有图像 静态文件等 它是我的应用程序的存储 我需要在http 主机 8080 存储 http host 8080 storage 语境 此时 我在应用程序状态的应用程序根目录上安装了一个名为 存储 的符号
  • 在以下字符串聚合中寻找与 .groupby 相反的 pandas“ungroup by”操作?

    假设我们采用 pandas 数据框 name age family 0 john 1 1 1 jason 36 1 2 jane 32 1 3 jack 26 2 4 james 30 2 然后做一个groupby group df df
  • 无法让浏览器启动 Express 下载

    继从this https stackoverflow com questions 53981780 angular cannot get file download from express using res download nored
  • 使用 Spring 表达式语言访问属性文件

    我使用 Spring Boot 使用 Thymeleaf 创建了一个简单的 Web 应用程序 我使用 application properties 文件作为配置 我想要做的是将名称和版本等新属性添加到该文件并访问 Thymeleaf 中的值
  • “easy_install -U cython”未能抱怨 vcvarsall.bat 和 -mno-cygwin

    在Windows下 似乎easy install具有 C 依赖关系并不是很容易 尝试 1 vcvarsall bat errors 我正在安装cython在Windows7下 与MinGw 我修改了Windows7的PATH包括C MinG
  • 在 Switch 语句中使用 Double

    下面的所有值都是双精度值 但 switch 需要整数值 有没有办法解决 switch fivePercentValue case floor 5 fivePercentValue 100 fivePercent backgroundColo
  • 开源项目但对 API 密钥保密

    我想使用 GitHub API 创建一个开源项目 但我在源代码中遇到了我的密钥的问题 我从不同的地方读到 永远不要在源代码中包含任何密钥 我同意这一点 我还发现了一些关于通过网络服务器进行身份验证而不是让用户获取自己的 API 密钥的模糊参
  • Rails Byebug 没有停止应用程序

    我想使用 byebug 来调试我的应用程序 但应用程序永远不会停止 尽管我已经把byebug在我的代码中 这是我的 Gemfile group development test do Call byebug anywhere in the
  • 为什么使用 CvScalar

    我需要帮助来理解 CvScalar 的功能到底是什么 例如下面的代码中 scalar 的任务是什么 for int i 0 i lt faces size i Point center Point faces i x faces i wid
  • C 编译中出现错误“错误:杂散'\342'”,“杂散'\200'”,“杂散'\234'”[重复]

    这个问题在这里已经有答案了 I used 记事本 https en wikipedia org wiki Notepad 2B 2B编写代码 当我尝试编译它时 我使用cc lab7 c o test1编译它 我得到了一堆杂散 342 杂散
  • setup.py install_require 带选项

    我需要添加rjsmin通过我的依赖install require在 setup py 中 rjsmin提供了一种通过使用禁用 c 扩展的方法 without c extensions像下面这样切换 python setup py insta
  • 如何在Android上启动NotificationListenerService

    我想使用NotificationListenerService 访问Android 手机上的通知 我检查了很多教程 但找不到他们在哪里调用该服务 我应该在MainActivity 上使用bindService 还是startService
  • 使用 doctest 测试异常链接和回溯输出

    如何使用 doctest 测试 多重回溯 看来要用几个ELLIPSIS and
  • 在 Angular 中页面加载(模态显示)后焦点输入后在 Safari iOS 中显示键盘

    我需要在页面加载或显示输入模式后设置焦点并打开键盘 简单的 focus 适用于 Android 以及 iPad 的横向模式 然而 在纵向模式和 iPhone 上 焦点已设置 但未显示键盘 我还尝试了添加并关注附加元素的解决方案 但它不适用于