iOS 错误 [UIWebView paste:]: unrecognized selector sent to instance

数字后端DRC Violation定位与自动化修复:Innovus与Calibre协同实战 设计规则检查(DRC)是芯片tapeout前确保版图可制造性的关键验证环节。在数字后端流程中,Calibre作为signoff级物理验证工具,会依据代工厂SVRF规则文件对GDS进行严格几何检查;而Innovus则提供快速迭代的in-design DRC反馈。两者协同成为工程师定位violation、保障流片成功的主流工作流。面对成千上万条DRC violation,高效的定位与分类思路、跨工具映射技巧,以及基于Tcl脚本的自动化修复方法,能大幅缩短物理验证周期。本文从DRC的分层定位出发,结合Innovu 阅读详情

出现控件:目前只在UIWebView中出现 切记!!!

那在什么场景中会出现这种情况呢?

如果一个包含文字的输入元素有焦点,然后按钮的点击会导致输入失去焦点,然后接下来在输入时双按会重新得到焦点并从弹出bar中选择剪切复制粘贴,就会导致此error。

也就是说当WebView页面中的HTML中有如下代码的时候

<input type="text">
<input type="button" >

即有输入框和按钮的时候,会出现 [UIWebView cut:]: unrecognized selector sent to instance 的错误风险

简单的说就是若有一个WebView中有输入框,又有按钮的话,执行下面的操作就会出现这样的错误:

1.在输入框中输入内容。

2.点击Button让键盘消失。

3。双击输入框中的内容出现选择的bar后点击剪贴。就会出现闪退的现象。

的具体错误如下:

2015-11-20 11:20:59.495 WebViewCutErrorDemo[3381:595295] -[UIWebView cut:]: unrecognized selector sent to instance 0x7f9612f19f40
2015-11-20 11:20:59.497 WebViewCutErrorDemo[3381:595295] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIWebView cut:]: unrecognized selector sent to instance 0x7f9612f19f40'
*** First throw call stack:
(
    0   CoreFoundation                      0x000000010ddb6f45 __exceptionPreprocess + 165
    1   libobjc.A.dylib                     0x000000010d82edeb objc_exception_throw + 48
    2   CoreFoundation                      0x000000010ddbf56d -[NSObject(NSObject) doesNotRecognizeSelector:] + 205
    3   CoreFoundation                      0x000000010dd0ceea ___forwarding___ + 970
    4   CoreFoundation                      0x000000010dd0ca98 _CF_forwarding_prep_0 + 120
    5   UIKit                               0x000000010e6a3923 -[UICalloutBar buttonPressed:] + 414
    6   UIKit                               0x000000010e6a1e47 -[UICalloutBarButton fadeAndSendAction] + 81
    7   Foundation                          0x000000010d416c39 __NSFireDelayedPerform + 402
    8   CoreFoundation                      0x000000010dd17264 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 20
    9   CoreFoundation                      0x000000010dd16e11 __CFRunLoopDoTimer + 1089
    10  CoreFoundation                      0x000000010dcd8821 __CFRunLoopRun + 1937
    11  CoreFoundation                      0x000000010dcd7e08 CFRunLoopRunSpecific + 488
    12  GraphicsServices                    0x000000011158fad2 GSEventRunModal + 161
    13  UIKit                               0x000000010e16430d UIApplicationMain + 171
    14  WebViewCutErrorDemo                 0x000000010d32c86f main + 111
    15  libdyld.dylib                       0x00000001104f292d start + 1
)
libc++abi.dylib: terminating with uncaught exception of type NSException

仔细想想第三方登录的页面有出现这种问题的风险。

有人说这里面说是苹果系统的bug,原因是这种操作在响应链不能正确的发送,并最终发送到UIWebView的实例,而不是内部的UIWebDocumentView。

下面提供一下这种问题的解决方案,思想就是动态的为UIWebView添加响应的方法。

新建一个类 FixedWebView 继承 UIWebView

FixedWebView.h代码如下

//
//  FixedWebView.h
//  webView
//
//  Created by zzg on 2018/12/20.
//  Copyright © 2018年 zzg. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface FixedWebView : UIWebView

@end

FixedWebView.m代码如下

//
//  FixedWebView.m
//  webView
//
//  Created by zzg on 2018/12/20.
//  Copyright © 2018年 zzg. All rights reserved.
//

#import "FixedWebView.h"
#import <objc/runtime.h>

@implementation FixedWebView
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        /// 适配防止崩溃
        [self prepareForNoCrashes];
    }
    return self;
}

- (UIView *)internalView
{
    static const char internalViewKey = '\0';
    /// 动态关联
    UIView *internalView = objc_getAssociatedObject(self, &internalViewKey);
    if (internalView == nil && self.subviews.count > 0) {
        for (UIView *view in self.scrollView.subviews) {
            if ([[view.class description] hasPrefix:@"UIWeb"]) {
                internalView = view;
                objc_setAssociatedObject(self, &internalView, view, OBJC_ASSOCIATION_ASSIGN);
                break;
            }
        }
    }
    return internalView;
}

void webViewImplementUIResponderStandardEditActions(id self, SEL selector, id param)
{
    /// IMP本质就是函数指针 methodForSelector 获得一个指向方法实现的指针,并可以使用该指针直接调用方法实现
    IMP imp = [[self internalView] methodForSelector:selector];
    
    /// 函数指针
    void (*method)(id, SEL, id) = (void (*) (id, SEL, id))imp;
    
    /// 直接用函数指针调用方法
    method([self internalView], selector, param);
    
}

- (void)prepareForNoCrashes
{
    NSArray *selectors = @[@"cut:", @"copy:", @"paste:", @"select:", @"selectAll:", @"delete:", @"makeTextWritingDirectionLeftToRight:", @"makeTextWritingDirectionRightToLeft:", @"toggleBoldface:", @"toggleItalics:", @"toggleUnderline:", @"increaseSize:", @"decreaseSize:"];
    
    for (NSString *selName in selectors) {
        
        /// 动态的根据方法名来获取方法
        SEL selector = NSSelectorFromString(selName);
        
        /// 若父类没有实现则给父类添加selector方法,若父类实现了,并不修改父类的selector方法
        class_addMethod(self.class, selector, (IMP)webViewImplementUIResponderStandardEditActions, "");
    }
}

@end

有些地方说的不到位,还请各位看官指正。。。



作者:洲洲哥
链接:https://www.jianshu.com/p/fbdda2e89070
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

Claude Desktop新功能:让非技术人士也能自主编程 摘要: Anthropic近日在Claude桌面应用中集成了Claude Code功能,显著降低了非技术用户的使用门槛。Claude Code作为代理式编程工具,支持多任务并行处理、Git隔离和可视化会话管理,无需命令行操作即可实现代码调试、重构等复杂任务。新增的“计划模式”通过先分析后执行的流程,确保安全性,使产品经理、数据分析师等非开发者也能参与技术工作。这一更新标志着AI技术正打破专业壁垒,让领域专家无需编码背景即可利用高级工具,推动技术民主化。 阅读详情

相关推荐

从维纳滤波到Richardson-Lucy:图像去模糊算法的原理与实践

本文深入解析了图像去模糊的核心原理,重点对比了维纳滤波与Richardson-Lucy两种经典去卷积算法。维纳滤波在频域进行快速权衡,适用于高斯噪声场景;而Richardson-Lucy算法基于泊松噪声模型迭代优化,更适用于天文、显微等科学成像。文章通过Python代码实践,详细阐述了PSF(点扩散函数)的关键作用及算法选型指南。

weixin_29285605的博客 385

-[UIImageView _isResizable]: unrecognized selector sent to instance

检查storyboard或者xib中对象的连接是否

izyhuang的专栏 1697

高通camera open代码流程(hal到kernel)

内容:简单介绍Camera open代码调用流程,从HAl到kernel。(api1+hal1) 前言 Android camera api和hal对应关系。安卓在版本更新过程中,camera相关代码也经历了几个版本的更新,表现为camera HAL版本更新(HAL1->HAL2->HAL3),camera API版本更新(camera API1->camera API2),接下...

oxoo123的专栏 4276

unrecognized selector sent to instance 0x7fe590d11d40'

问题描述: 本文中IOS项目使用了CocoaPods管理第三方库。为了将项目打包为.framework,另外单独建立了一个Cocoa Touch Framework静态库项目,并成功将项目打包为.framework,具体的如何将使用了CocoaPods管理第三方库的项目打包为.framework,可以参考文章《将使用了CocoaPods的IOS项目打包为Framework+打包后的测试+Pref...

我爱编程持之以恒 1万+

5、Visual Studio Code:强大的编码与文件管理功能

本文详细介绍了 Visual Studio Code 的强大编码与文件管理功能,涵盖代码导航、引用查找、符号重命名、实时代码分析、IntelliCode 提示、文件和文件夹操作等内容。通过功能对比、流程图和实际开发案例,展示了 VS Code 如何提升开发效率和代码质量,适用于各类编程语言和项目开发场景。

water的专栏 132

华为面试手撕真题【求1-n的最小公倍数】

求1-n的最小公倍数

MISAYAONE的博客 2万+

unrecognized selector sent to instance出现的原因和解决方案

造成unrecognized selector sent to instance iphone,大部分情况下是因为对象被提前release了,在你心里不希望他release的情况下,指针还在,对象已经不在了。 很多时候,是因为init初始化函数中,对属性赋值没有使用self.foo赋值,而是直接对foo赋值,导致属性对象没有retain(心里以为retain了),而提前释放。

FIGHTING的专栏 2万+

Python 爬虫实战:Twitter 数据定向抓取(特定话题 + 用户推文爬取与分析)

在社交媒体研究、舆情监测和市场分析等领域,Twitter 数据具有极高的价值。本文将详细介绍如何使用 Python 构建一个完整的 Twitter 数据爬取系统,包括特定话题和用户推文的爬取与分析。我们将涵盖从认证到数据存储、清洗、分析和可视化的全流程。

u014481728的博客 1035

ios开发之--unrecognized selector sent to class 问题解决

这个问题是指找不到文件或者方法,排除路径问题(路径问题这里不再细说),添加文件的时候明明已经add to targets了, 但是进去项目中,查看.m文件,文件中不能运行代码的文件就是缺少了这个,对比项目中的其他文件,仅仅是缺少这个勾选 于是勾选target membership,果然编译运行都好了,如下图: ...

明耀的博客 2434

SPICE仿真软件:Ngspice_(2).安装与配置

在Netlist文件中直接定义模型。V1 1 0 5R1 2 0 1k* Analysis库文件中可以包含多种电路元件模型和参数。

kkchenjj的博客 1585

Python爬虫实战:模拟登录B站 – 处理Cookie和加密参数

由于B站在登录过程中采用了多种安全措施,包括加密的请求参数和cookie验证,模拟登录成为一项具有挑战性的任务。首先,我们需要获取B站的登录页面,并解析出其中的CSRF令牌和其他隐藏的字段。B站的登录接口通常会包含一些动态的加密参数,我们需要在登录前通过GET请求获取这些信息。本文详细介绍了如何使用Python模拟登录B站,解决加密参数的处理、图形验证码的识别以及登录后的数据抓取。库中的加密方法加密登录请求中的密码。一旦登录成功,我们可以通过维护会话状态,抓取登录后的数据,如个人主页、评论、观看记录等。

2201_76125261的博客 1309

【iOS】unrecognized selector sent to instance出现的原因和解决方案

【iOS】unrecognized selector sent to instance出现的原因和解决方案 博客分类: Objective-C Objective-Cios  概述:造成unrecognized selector sent to instance iphone,大部分情况下是因为对象被提前release了,在你心里不希望他release的情况下,指针还在,对象已

yuyezhulan的专栏 1万+

使用 MATLAB/Simulink 构建一个多时间尺度下的微电网经济运行优化策略模型

本文介绍了基于Simulink的多能互补微电网系统建模方法,重点关注多时间尺度下的经济运行优化策略。内容包括:系统背景与目标、微电网结构设计(光伏、风电、储能、柴油发电机等模块)、多时间尺度能量管理架构(日前优化、日内滚动优化、实时控制)的实现步骤,以及仿真运行与结果分析。教程详细说明了如何在Simulink中调用优化算法,设置仿真参数,并提供了进阶研究方向和资源推荐。该模型为研究微电网的经济运行和智能调度提供了完整的仿真平台解决方案。

amy_mhd的博客 170

iOS unrecognized selector sent to instance出现的原因~解决方法

联系人:石虎 QQ:1224614774昵称:嗡嘛呢叭咪哄 QQ群:807236138群称:iOS 技术交流学习群 一、概念 报unrecognized selector sent to instance是指针在,对象提前释放了 二、可能原因: 1.团队开...

石虎 7250

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

iOS开发之unrecognized selector sent to instance错误

最近今天在编写一个学习系统ios版本,遇到了unrecognized selector sent to instance 0x7fe0f314de10 类似这样的错误。 我这个程序的大体意思是一个viewcontroller A中需要包含另外一个viewcontroller B或者自定义的viewB,这样可以在A中定义一个B属性。定义之后按常理,在a中获得b属性,直接赋值就可以了,但是却会抛出上面的

Kevin's zone 5184

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

IOS:unrecognized selector sent to instance

1.上问题,遇到第一个ios问题,设置断点之后出现unrecognized selector sent to instance,crash! 一个来自storyboard的button按钮,name为enterPressed,arguments值为none 模拟器中每次此button处crashs 2.问题已解决,对于我着刚入门的ios的小白来说,问题让我有点不知所措,下面分享填坑过...

finger__的博客 417

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Solve Error: 'NSInvalidArgumentException', reason: '-[UITableView mas_makeConstraints:]: unrecognize...

  下面是iOS开发用第三方库可能出现的错误,及其解决方法: 1. 'NSInvalidArgumentException', reason: '-[UITableView mas_makeConstraints:]: unrecognized selector sent to instance 0x7fa5c402fa00' 这个是使用Masonry库时遇到的,Masonry库是做Auto...

weixin_34419326的博客 713

使用Masonry报unrecognized selector sent to instance的错

问题的来源:       现在我公司有两个项目,A项目(使用xcode的版本比较旧),B项目(使用最新的xcode版本);       B项目是使用cocoaPods管理第三方库,并加了一些第三方库。A项目没有。       现在要更新A项目,A和B项目有部分相似的界面,于是我把B项目的部分代码移植到A项目,并且给A项目添加Pod来管理第三方库。       于是这里在使用Masonry事

首字母大写-博客 6503

出现“unrecognized selector sent to instance”问题原因之一及解决方法。

  对于iPhone开发初学者来说,很想实现自己在iPhone上的第一个小程序,准备工作就绪侯就信心满满的开始了!一般来说大家可能都是从Hello World做起吧。反正我是的,:),如果按照文档上的说明去做,一般也不会出现什么问题。也建议初学者这样开始,毕竟会增强我们自己的信心。 但是当我们自己独立去做一个Button实现响应事件的小程序的时候,有时候确给我们出现了一

henry_qi的专栏 6万+

iOS开发 解决无法识别framework中分类(类别拓展)方法(unrecognized selector sent to instance)的问题

使用https://blog.youkuaiyun.com/sinat_31177681/article/details/105862591里面的方法,检索了framework中的链接文件,发现是存在分类方法的签名的,可是实际运行的时候却报错 解决方法是在Xcode Project的Build Settings下Other Linker Flags里面加入-ObjC标志。 之所以使用该标志,和Objective-C的一个重要特性:类别(category)有关。根据这里的解释,Unix的标准静态库实现和Objecti

酸柠檬的博客 2722

一文读懂iOS中的Crash捕获、分析以及防治

对于iOS端开发,定位和解决Crash毕竟两个流程,首先是根据线索来分析和定位问题,得到一个大概的猜想,之后按照自己的猜想去提供外部条件,来尝试复现问题,如果问题能够成功复现并复原与线程问题相似的堆栈现场,则基本完成了90%的工作,剩下的10%才是修复此问题。对于crash比例极低的,例如没有版本相关性的,对我们的应用影响极小的,我们可以通过去做AB实验尝试去修复。2.bad_access的排查途径有哪些?3.什么情况下会产生bad_access?

黑码哥的技术博客 2万+

unrecognized selector sent to instance 0x266070

unrecognized selector sent to instance 字面上翻译:给实体对象发送了不认识的消息。 遇到这个问题: 大概有如下两个原因: 1.对象过早的释放掉了,你引用的对象不存在。不能想空对象发送特定的方法(不是全部,因为release等特殊方法,例外)。 2.该对象没有这个方法,检查一下方法参数跟调用该方法时参数是否匹配(切记粗心大意)。

一个程序猿的故事 4万+

出现“unrecognized selector sent to instance”问题原因之一及解决方法

<br />对于iPhone开发初学者来说,很想实现自己在iPhone上的第一个小程序,准备工作就绪侯就信心满满的开始了!一般来说大家可能都是从Hello World做起吧。 <br /> 反正我是的,:),如果按照文档上的说明去做,一般也不会出现什么问题。也建议初学者这样开始,毕竟会增强我们自己的信心。 <br />     但是当我们自己独立去做一个Button实现响应事件的小程序的时候,有时候确给我们出现了一点点小问题。也就是我题目所说的。下边我就列出出现此问题的 <br /> 错误代码以及解决

imac_bmw的专栏 478
上一篇: charles重定向请求map
下一篇: iOS13 适配
runtime666
博客等级 码龄10年 41粉丝 40原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值