Advertisement

IOS开发中遇到的问题总结【持续更新】

阅读量:

目录

知识点补给站

1. 设置App的图标

2. SwiftUI中的Image控件使用系统图标

3、修改app名称

​编辑

4、swift ui中软键盘弹出时将底部视图往上顶的问题

5、swift ui中软键盘的关闭问题


知识点补给站

Swift学习

Swift学习


1. 设置App的图标

随后准备好一张分辨率设置为1024×1024像素的图标文件,并将该图标文件导入到指定的位置

打开压缩包后, 定位到AppIcon.appiconset文件夹, 替换项目当中的AppIcon就能完成安装。

2. SwiftUI中的Image控件使用系统图标

第一步是要了解系统中图标的名字;为了获取这些名称的信息,在App Store上下载Symbols Explorer应用程序会有所帮助。

下载打开之后点开其中一个图标即可copy图标名称

接着直接在代码中使用即可:

复制代码
    Image(systemName: "square.and.arrow.up.fill")

3、修改app名称

如果没有找到这个选项,需要手动添加下,如图:

4、swift ui中软键盘弹出时将底部视图往上顶的问题

在你的布局中加入一下代码即可。

复制代码
    .ignoresSafeArea(.keyboard, edges: .bottom)

当您混合使用SwiftUI与UIKit时,请确保将其放置于自定义视图的位置上。例如,在Xcode开发环境中,默认配置中通常会包含HomeTabBarView这一组件。

5、swift ui中软键盘的关闭问题

新建AnyGestureRecognizer.swift

复制代码
 class AnyGestureRecognizer: UIGestureRecognizer {

    
  
    
     // 当用户开始触摸屏幕时调用
    
     override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
    
     // 如果触摸的视图是UIControl控件(比如按钮等)
    
     if let touchedView = touches.first?.view, touchedView is UIControl {
    
         // 取消这个手势,因为我们不希望打断控件的正常操作
    
         state = .cancelled
    
  
    
     // 如果触摸的视图是可编辑的UITextView(比如文本输入框)
    
     } else if let touchedView = touches.first?.view as? UITextView, touchedView.isEditable {
    
         // 同样取消这个手势,不想干扰文本输入
    
         state = .cancelled
    
  
    
     // 如果以上情况都不是,那就开始手势识别
    
     } else {
    
         state = .began
    
     }
    
     }
    
  
    
     // 当触摸结束时调用
    
     override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
    
     // 标记手势为结束状态
    
     state = .ended
    
     }
    
  
    
     // 当触摸被取消(比如来电或者中断)时调用
    
     override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent) {
    
     // 取消这个手势
    
     state = .cancelled
    
     }
    
 }

在SceneDelegate.swift 中添加以下代码

1、SceneDelegate实现UIGestureRecognizerDelegate

2、重写gestureRecognizer

复制代码
 func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {

    
     // 返回 true 表示允许多个手势同时识别
    
     return true
    
     }

3、在scene方法中添加以下代码

复制代码
 // 创建一个自定义手势识别器,设置成:当用户在 window 上点击时,调用结束编辑的方法(相当于关闭键盘)

    
 let tapGesture = AnyGestureRecognizer(target: window, action: #selector(UIView.endEditing))
    
 // 设置手势识别器不需要独占触摸,也就是说,用户在触摸屏幕时,手势识别器不会阻止其他手势(可以同时触发多个手势)
    
 tapGesture.requiresExclusiveTouchType = false
    
 // 设置手势识别器不取消其他触摸事件,也就是说,手势被识别时,触摸还能继续传递给其他界面上的控件(不影响按钮点击等操作)
    
 tapGesture.cancelsTouchesInView = false
    
 // 把当前类设置为手势的代理,方便后面管理手势行为
    
 tapGesture.delegate = self
    
 // 把这个手势识别器添加到 window 上,也就是让它开始监听手势事件
    
 window?.addGestureRecognizer(tapGesture)

当用户在macOS上使用Touch ID时,默认情况下显示的触控板区域会包含键盘输入。一些用户可能会出于隐私保护或个人偏好需求,在特定场景下选择隐藏键盘。具体实现的方法主要有两种途径:第一种方式是在系统偏好设置中关闭触控板通知功能,并将触摸板图标从主菜单中移除;第二种方式则是在Xcode项目配置中关闭触控板相关选项。

全部评论 (0)

还没有任何评论哟~