![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ios
_小呵呵
ios
展开
-
iOS原生 输入框短信自动填充多遍 原生解决办法
收到第一个长度为6的值时,取消监听,发接口,接口回来后,再增加监听。当用原生代码监听的时候,判断6位直接发接口就会导致发3次,短信自动填充 只有当输入框text无值的时候才会显示。准确来说会走很多遍,比如验证码是123456。这两种方法 自动填充时都候会走 3整遍。监听输入框内容变化的其中两种方法。所以不需要考虑这种情况。原创 2023-07-21 15:04:36 · 866 阅读 · 0 评论 -
UIApplication openURL 的内部实现 和 UIActionSheet showInView的内部实现 和 UIApplication windows的内部实现
UIApplication windows 是已经不再推荐的方法 需要("Use UIWindowScene.windows on a relevant window scene instead", ios(2.0, 15.0))主要是这句 [rdi _presentAlertControllerFromRect:r14 inView:0x0 direction:0x1 animated:r9 completion:var_50];1查看ios系统调用打电话的弹框如何弹出来的。直接跳页的时候它还在,原创 2023-03-09 14:38:15 · 449 阅读 · 0 评论 -
TMF开发中遇到的问题之页面经常偶发“系统异常,请稍后重试。”的弹框报错问题
另一种原因和是webview的usergent有关,客户端里会重新设置usergent添加自己对应的标识,前端的webview页面加载时先判断usergent是客户端还是电脑浏览器,然后走不同的请求方法,来设置是浏览器模式还是客户端模式,因为加载webiew离线包必须在设置usergent之后,之前则会弹框报错。一种原因是接口报错,控制台看看有没有接口报错打印。原创 2023-02-23 10:12:45 · 401 阅读 · 0 评论 -
TMF容器开发中遇到的问题之如何“对桥接进行创建与释放监控”,防止整个viewcontroller无法释放
tmf框架桥接的创建都会走 invokeParameters方法,然后在这个方法打上断点,找到它上层的类及方法名,方法名是JSBridgeXXX这个,类名是invokeParametersXXX。因此对这两个方法进行hook,增加监控逻辑。释放的时候看注释是走complete方法。原创 2023-02-23 10:03:52 · 187 阅读 · 0 评论 -
iOS文件分享 +_allowedItemPayloadClasses 报错问题
解决办法:仔细检查文件路径,肯定路径多拼或少拼了。分享失败的时候控制台会有如下打印。原创 2023-02-20 11:34:47 · 808 阅读 · 0 评论 -
TMF开发中遇到的问题之简易方法查看webview容器有没有被释放
然后点击电脑上的Safari浏览器 ----开发 ---找到自己的手机名字,打开的app中的webview加载的链接就会显示出来,关闭后就会一并消失,如果打开后一直存在,说明没有正常释放。然后手机连上电脑打开电脑上的Safari浏览器---设置---高级---在菜单栏中显示“开发”菜单。首先点击手机的设置---Safari浏览器---高级---网页检查器 打开。原创 2023-02-17 15:11:19 · 171 阅读 · 0 评论 -
TMF容器开发中遇到的问题之不同环境测试包覆盖安装环境不变的问题
将UD中的字段删除即可。原创 2023-02-17 14:51:03 · 122 阅读 · 0 评论 -
TMF容器开发中遇到的问题之iOS16系统下某些webview图片不展示问题
解决办法是找到框架的网络请求类:类似 XXNetwork。原因是iOS16增强了对非标准https的校验。原创 2023-02-17 14:44:26 · 251 阅读 · 0 评论 -
TMF容器开发中遇到的问题之打开的webview容器经常无法释放
1.是有些桥接调用完没有主动调用finish方法,所有桥接必须调用,不管这个桥接是做啥的,改完这两点基本能解决90%的问题。2.还有就是桥接里面有循环引用。原创 2023-02-17 14:36:28 · 80 阅读 · 0 评论 -
TMF容器使用iTouch运行就报错的问题
解决办法:重写系统获取devicename的方法,不返回itouch即可。原创 2023-02-17 13:58:59 · 110 阅读 · 0 评论 -
iOS开发之将NSLog日志展示在app上并将根据不同日志种类设置文字颜色与背景色的日志文件分享到电脑查看
一种代码捕捉NSLog打印的方法是使用宏定义,将NSLog重新定义为一个新的方法,在这个方法里使用全局单例、全局变量数组保存这些打印。因此将日志添加富文本标签,增强阅读性,增加背景色,文字颜色的支持,来使排查日志更方便。将这些数据再写一个tableview展示出来即可在客户端中查看了。有了思路,然后就好办了,选择html的标签将日志文本包装分享出来。但通常日志量都很大,排查问题需要查看大量的日志,搜索也不方便。可以将这些打印日志,写到纯文本里来,分享到电脑上来查看,然后再将其定义为全局方法。原创 2023-02-17 10:34:32 · 591 阅读 · 0 评论 -
如何用代码判断iPad是否支持面容ID(iPad可以使用面容ID解锁但没有刘海)
废话不多,直接上代码。原创 2022-12-28 15:37:25 · 519 阅读 · 0 评论 -
iOS如何查找某个方法、某个方法名、某个字符串是在哪个静态库里声明的、调用的
比如要找UmengUncaughtExceptionHandler这个方法是哪个库里使用的。然后编译的时候会报错,报错信息会告诉你和哪个库里的这个方法重复了。使用hopper只能看到这个方法的实现,看不到它在哪个库里。这时候可以这样做,随便找一个文件声明一个同样的方法。使用find命令有时候找不到。原创 2022-10-24 11:54:22 · 479 阅读 · 0 评论 -
Domain: com.apple.dt.MobileDeviceErrorDomainCode: -402620403
这是因为用的是绕过id的设备debug,只能换成使用正常激活的手机调试。原创 2022-09-25 19:39:02 · 1707 阅读 · 0 评论 -
iOS开发之web容器内点击自定义键盘以外的区域收自定义键盘的简单实现
比较好的办法是在键盘的view里面实现- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event方法,通过point可以判断点击的是键盘区域内还是外,在键盘区域外的话收一下键盘,并且也不影响web页面的点击事件。较流行的是使用蒙版,这样整个页面都被蒙版覆盖,点击键盘以外的区域手动关闭,但会有一个问题:原页面的点击事件无法执行。当然这个键盘不是通过获取第一响应弹出的,是addsubview。原创 2022-09-15 11:49:16 · 651 阅读 · 0 评论 -
iOS开发之iOS15及以上长按输入框点击文本识别,但识别界面不只是键盘区域,而是全屏的,并且会把键盘顶飞的bug解决
代码里面把UIViewController 的 modalPresentationStyle方法给hook了,而且只返回了UIModalPresentationFullScreen,导致所有页面都是以全屏模式展示。判断如果是文本识别的控制器,则调用系统自己的modalPresentationStyle,正常情况下的实况文本,以微信举例,找一个输入框,长按会出现下图按钮(粘贴右边的),点击这个按钮键盘会变成后置摄像头的内容,如下图。识别完之后,键盘显示异常成了空白,如下图。原因是控制器的模态展示代码问题,原创 2022-09-13 10:08:06 · 1464 阅读 · 0 评论 -
iOS WKWebView网页文字加载完了但过了很久才执行didFinishNavigation该怎么办,我需要在文字的加载完后进行页面操作
1.创建WKWebViewConfiguration的时候注入监听代码$(document).ready(function(){})4.然后在dealwith方法里就可以执行js代码了evaluateJavaScript,获取body,添加标签都可以的。这是因为少量的图片视频没有下载完,但不影响网址文字整体内容查看,原生该如何如何监听呢?2.在这个方法里 和原生交互,调用原生方法,这里以alert为例。研究过程不写了,直接写最终解决方法。...原创 2022-08-17 17:26:09 · 1769 阅读 · 0 评论 -
iOS实现正弦函数渐变动画,波浪线渐变动画的实现思路
在iOS里面单独的波浪线使用CAShapeLayer设置strokeColor,创建CGMutablePathRef使用正弦函数sin获取y值,连接成点CGPathAddLineToPoint得到一条曲线,然后赋值给图层。这个mask可以控制显示的区域,mask也是layer类型,放一张png格式的渐变图,mask透明并且正弦函数移动,显示的效果就是带渐变的波浪线。在iOS里面单独的渐变使用CAGradientLayer,设置colors,设置locations可以生成渐变的矩形,但不是线,不能动。...原创 2022-08-04 14:50:03 · 648 阅读 · 0 评论 -
Xcode13.1运行工程报错fatal error: ‘IFlyMSC/IFly.h‘ file not found的问题
原因是路径太深了/Users/yyy/Desktop/代码存放/需求代码存放/SDK/IOS/IOS/IOS/IOSSDKDemo/把工程拖到桌面问题解决。原创 2022-08-02 14:14:46 · 676 阅读 · 0 评论 -
用swift5 新写一个app需要用到需要考虑的
1.扩展left right top bottom2.设置button,Selector写法 //按钮的点击事件// let btn : UIButton = UIButton.init(type: UIButton.ButtonType.custom)// self.addSubview(btn)// btn.frame = CGRect.init(x: 10, y: 0, width: 100, height: 30)//......原创 2022-07-15 02:40:36 · 454 阅读 · 0 评论 -
全网首发独发:如何避免因为调用了没有实现的类方法而造成APP崩溃
参考https//www.dazhuanlan.com/2019/12/09/5dee4ef6dca6f/这篇博客的方法是处理的实例方法没有的情况会防止闪退。通过网上搜索+forwardingTargetForSelector可以发现都是要不针对实例方法的,要不类方法的有,但是要提前知道崩溃的方法名。可是我都知道哪个方法崩溃了我为什么还要用forwardingTargetForSelector我为什么不直接加上这个方法呢?所以,对上面参考的代码,进行简单的改造既可以实现这个目标。...原创 2022-07-15 02:22:34 · 230 阅读 · 0 评论 -
iOS开发之如何给工程中所有相同名字的方法都加上断点
本方法可适用于以下场景,前提是想查的方法都存在于三方静态库动态库中,无法直接搜索字符串得到场景1:只知道方法名,如何找到这个方法所在的类名场景2:已知一个类有某个方法,怎么知道有没有其他的类也声明实现了相同的方法场景3:对于系统提供的某个代理方法,如何一次性全部加上断点,来查看当前业务使用的是哪个类的这个方法。比如被封装的网络请求,我们如何知道是最终的哪个类发出去的这就是要说的符号断点以网络请求的这个代理方法为例 URLSession:dataTask:didReceiveResponse:complet原创 2022-07-09 10:18:20 · 429 阅读 · 0 评论 -
iOS开发之如何使用block封装网络请求
关键字:SSTSRespondPacket 懂的人看到这里自然会懂使用block封装网络请求终于实现了记录一下原创 2022-04-22 12:01:33 · 1520 阅读 · 0 评论 -
拿来即用删掉即走:iOS客户端无侵入、一包任意环境切换实践篇
无入侵环境切换方法原创 2021-11-27 21:13:07 · 2300 阅读 · 0 评论 -
iOS开发之录屏时如何使系统录不到敏感信息
----原理:在密码输入框插入播放视频的layer,我们看到的是视频,录屏录到的是layer后面内容参考:iOS 防止系统截屏获取关键信息_WangQingLei0307的博客-CSDN博客----转载 2021-10-21 09:30:14 · 726 阅读 · 0 评论 -
iOS系统录屏如何增加雷达波纹效果(从一个点向周围扩散)的简单实现
1.在mian.m中UIApplicationMain的第三个参数改为MYApplicationint main(int argc, char * argv[]) { NSString * appDelegateClassName; @autoreleasepool { // Setup code that might create autoreleased objects goes here. appDelegateClassName = NSSt原创 2021-08-31 16:11:55 · 716 阅读 · 0 评论 -
WKWebview如何隐藏h5输入框调起的系统自带键盘
参考这个: https://blog.csdn.net/qq_15509071/article/details/119169904把inputAccessoryView 改成inputView即可原创 2021-08-06 09:08:38 · 632 阅读 · 0 评论 -
Xcode工程在iPhone5这些armv7的架构调试后,再使用iPhone X这种arm64架构的设备调试报错的问题解决办法
报错原因是工程里添加了shell脚本$PROJECT_DIR/$PROJECT_NAME/replace.sh为什么加这个呢?因为有些sdk包含所有的架构armv7,arm64,x86_64但是提审的时候苹果只要真机的,不要模拟器的会报错。所以加入这个来剔除模拟器架构。但是在iPhone5这些armv7的架构调试后,再使用iPhone X这种arm64架构的设备调试报错的问题解决办法或者使用iPhone X这种arm64架构的设备调试后,再使用iPhone5这些ar...原创 2021-07-28 10:37:29 · 325 阅读 · 0 评论 -
隐藏WKWebview键盘工具条(inputAccessoryView)的原理是什么,如何隐藏后再显示?
隐藏WKWebview键盘工具条的代码很多,比如https://www.jb51.net/article/162546.htm但是没有说明原理的。昨天研究了一下,原理是:动态新建一个WKWebview的子类YYY_UIView,这个子类重写-inputAccessoryView方法,再把WKWebview这个类换成YYY_UIView。注意:这个实际的.h和.m是可以随便命名的,比如YYYYNoInputAccessoryView.h ,不要定义为WKWebview的分类或者其他..原创 2021-07-28 10:00:35 · 1148 阅读 · 0 评论 -
mPaaS苹果端离线包WKWebView调用自定义数字键盘,原生输入框加到WKScrollView上,设为第一响应但马上失去第一响应导致键盘无法弹出的问题
之前写过前端输入框调用原生自定义键盘支持光标的博客:https://blog.csdn.net/qq_15509071/article/details/108334255但实际使用其实没有那么复杂,只要传过来坐标、字体、字号、文字就可以,不用考虑页面升降,光标拖动。设置断点发现是-[H5Keyboard keyboardShowNotification:toobarHeight:]的问题当我们原生输入框becomeFirstResponder的时候,上面的方法会收..原创 2021-07-27 15:17:12 · 462 阅读 · 0 评论 -
在Xcode中如果不小心点了一下数据量特别大的文本文件导致Xcode卡死好长时间如何处理
比如xcode工程中引入了一个vConsole.js文件93k大小这是用”文本编辑“打开的如果使用Xcode打开,就会卡死有木有解决办法呢?压缩这个js文件,在Xcode工程中以.zip的文件格式出现。操作步骤:直接把.js后缀改成.zip。调用方法基本不变。把 NSString *path = [[NSBundle mainBundle]pathForResource:@"vConsole.js" ofType:nil];改为...原创 2021-07-18 12:14:59 · 474 阅读 · 2 评论 -
iOS开发者在苹果电脑上需不需要搭建本地svn服务
日常开发中如果各自开发不同的需求,修改同一个文件的概率也不多的时候,本地版本管理有也看不出多大用处。如果比较大的需求,每天都有大量改动,大概率改到同一个类,则比较重要。每天处理大量的问题修改,每天总结一下改了哪些内容,本地代码管理则是个很好的选择。经过查阅各种资料,mac电脑搭建svn服务供他人访问的方法是1.网上好多资料说苹果电脑自带svn只是没有开启,这是不对的,可能以前的mac系统有,但macos11.3是没有的,需要自己安装2.brew install s..原创 2021-07-16 21:55:14 · 259 阅读 · 0 评论 -
mPaaS跳转到继承于H5WebViewController的离线包容器出现蓝色导航条的问题
通过查看页面结构可以看到是加载到DTBaseView上面的,重写UIView的addSubView方法可以查到这个imageView的tag值是10000。通过H5CustomAnimator这个插件来展示的查看源码/* @class H5CustomAnimator */-(void)animateTransition:(void *)arg2 { r31 = r31 - 0x190; stack[272] = d11; stack[280] = d10; ..原创 2021-07-08 12:42:08 · 901 阅读 · 0 评论 -
如何重写starth5app(JsApiHandler4StartApp)这个插件
为什么要重写呢?因为使用它打开的页面在DFNavigationController中,会产生一些问题。1.如何在前端不改任何代码的情况下,直接使starth5app从调用JsApiHandler4StartApp改为调用自己写的插件JsApiHandleriOSDIYStartApp ?答:在内置插件列表Poseidon-Extra-Config.plist中,由原来的改为即可。2.当然调试的时候可以这样,保险的做法是新写一个插件,前端调用参数不变,客户端来进..原创 2021-07-08 10:07:55 · 388 阅读 · 2 评论 -
关于使用exitSession(JsApiHandler4ExitSession)关闭页面中出现的问题
由于APP的层级比较复杂,使用exitSession就会出现问题,比如:打开几个离线包页面再打开原生页面后调用exitSession,可是原生页面也被关闭了。但另一个入口却没有问题原因是starth5app后打开的页面是在DFNavigationController堆栈中的,它是window的根视图控制器。另一个入口没问题,因为是原生通过[[MPNebulaAdapterInterface shareInstance] createH5ViewController:mCreate..原创 2021-07-05 17:42:33 · 196 阅读 · 0 评论 -
mPaaS苹果端在进入新离线包页面后返回上一页resume如果不重新设置导航条及返回事件导致上一页无法返回的问题解决办法
原因是框架的插件都是”单例“,离线包页面从第一页进入到第二页,第二页调用导航条的插件进行设置并给currentViewController赋值。插件在APP运行过程中只有一份,第二页返回到第一页时,第一页如果没有再次调用插件,则currentViewController还是第二页的。解决办法:点击返回按钮时,获取当前APP展示的控制器,并与插件的currentViewController变量比较,不一致的话则使用手动获取的当前展示的控制器调用返回事件。...原创 2021-07-05 12:36:36 · 337 阅读 · 0 评论 -
关于iOS屏幕旋转中容易忽略的地方
1.info.plist中支持横屏+竖屏2.appdelegate中只支持竖屏3.window.rootvc如果是导航或Tab控制器,原创 2021-06-03 09:05:53 · 286 阅读 · 0 评论 -
蚂蚁mPaaS框架控制台打印 原生与h5交互数据 和 RPC接口返回数据 都是Unicode乱码如何处理
1.原生与h5交互数据具体的参考之前博客:原创 2021-05-27 15:19:10 · 446 阅读 · 0 评论 -
苹果开发者网站上的设备udid清掉之后,但多部门还没统计新的udid该怎么办,旧的证书描述文件还能用吗
每年续费后有一次清除设备udid的机会,这时增加新设备也会把这个机会用掉,会导致无法清除。因此到时间,把udid都清掉,便于新一年的测试机udid统计。清掉后 之前还在有效期的描述文件是不受影响的,还可以使用。但描述文件不仅跟它自己的有效期相关,还跟它包含的证书相关。因此:如果清掉之后过很长时间才重新添加测试设备,还不能影响之前正常使用,可以这么做:在过期前重新制作各app的测试证书与描述文件,这样有效期就又多了将近一年...原创 2021-05-21 10:28:27 · 775 阅读 · 0 评论 -
MVVM在iOS端当当App(11.4.0版本)首页实现探索
先查看页面结构点击views从DDhomeVC看起 -[DDHomeVC viewDidLoad]void -[DDHomeVC viewDidLoad](void * self, void * _cmd) { r0 = [self view]; r0 = [r0 retain]; r2 = r21; [r0 setBackgroundColor:r2]; [r0 release]; [r21 release]; r21 ...原创 2021-04-19 16:04:56 · 256 阅读 · 0 评论