从 UITextView 的菜单中选择和删除文本时崩溃

     2023-03-12     255

关键词:

【中文标题】从 UITextView 的菜单中选择和删除文本时崩溃【英文标题】:Crash upon text selection and deletion from menu in UITextView 【发布时间】:2011-11-08 17:20:28 【问题描述】:

我的 UITextViews 在文本选择和删除时使应用程序崩溃。

剪切、复制和粘贴似乎都可以正常工作。日志中唯一的错误是:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIMenuController view]: unrecognized selector sent to instance 0xff85ac0'

它是一个普通的 UITextView,UIMenuController 没有被触动和自定义。有什么想法吗?

在模拟器和设备上的 iOS 4.3 和 5.0 中发生。

没有更多启用僵尸的信息,除了我需要解释的堆栈跟踪。新的 Xcode 对此不太满意:

(0x356338bf 0x360ae1e5 0x35636acb 0x35635945 0x35590680 0x37c63925 0x3816b 0x1a557 0x3559222b 0x37a869a7 0x3559222b 0x31671943 0x35607a63 0x356076c9 0x3560629f 0x355894dd 0x355893a5 0x32073fed 0x3794d743 0x29d1 0x2990)

【问题讨论】:

未捕获的异常通常会将源代码编辑器打开到代码中的特定行。能贴出相关代码吗? 它不在我的代码中,但我会发布堆栈。 【参考方案1】:

UITextViewUITextField 默认使用 UIMenuController 的原因未记录(如果您找到文档,请纠正我,我会更新此答案)。如果您的 UIText*Delegate 实现 delete:,则会添加“删除”选项。当从菜单中选择“删除”时,您的字段的代表将被调用,并带有 delete: 消息。我通过在断点列表窗格中添加一个异常断点发现了这一点,它为我提供了原始异常没有的正确符号化的堆栈跟踪。导致崩溃是因为我使用delete:(id)sender 以需要使用发件人的方式服务栏按钮项目。我通过将delete: 重命名为deletePart: 来修复它。用户仍然可以通过选择“剪切”来删除文本。

【讨论】:

很棒的发现。有同样的问题。【参考方案2】:

view 发送到UIMenuController 意味着您可能将UIMenuController 分配到了它不应该去的地方。查看您是否将任何内容设置为等于 menuController(或任何您的实例变量名称),看看这是否会导致问题。

另外,这可能是代码中更早发生的过度释放,其中UIMenuController 恰好分配在以前被过早释放的东西占用的内存空间中。启用NSZombies,看看你的错误变成了什么。

【讨论】:

谢谢。请记住,我没有在代码中的任何位置创建 UIMenuController。这只是来自 UITextView 的默认行为。我马上试试 NSZombies。 另外,如果您回复shouldReplaceCharacters:inRange:,那也可能是一个值得关注的地方。 我不是,但我确实尝试添加 - 返回 YES - 以及我认为可能很关键的其他一些委托方法。

我可以在 UITextView 中以编程方式选择文本吗?

】我可以在UITextView中以编程方式选择文本吗?【英文标题】:CanIProgrammaticallySelectTextinUITextView?【发布时间】:2011-02-0717:32:55【问题描述】:我想在UITextView上选择Text,类似于我们在点击时看到的默认“选择”和“全选”弹出选... 查看详情

无法从 iOS 中的 UITextView 获取已删除的字符

】无法从iOS中的UITextView获取已删除的字符【英文标题】:NotabletogetdeletedcharacterfromUITextViewiniOS【发布时间】:2017-02-0915:25:19【问题描述】:当用户按下键盘上的删除按钮时,我正在尝试从UITextView中检索已删除的字符。当我在textv... 查看详情

复制所有文本后隐藏复制和取消选择 UITextView 选项

】复制所有文本后隐藏复制和取消选择UITextView选项【英文标题】:HideCopyandDeselectUITextViewoptionsaftercopyingalltext【发布时间】:2012-09-1409:35:29【问题描述】:我正在开发一个消息传递应用程序。当用户在UITextView中输入他们的消息时... 查看详情

在 UITextView 中定义后取消选择单词

】在UITextView中定义后取消选择单词【英文标题】:DeselectwordafterDefineinUITextView【发布时间】:2012-12-2018:24:51【问题描述】:我有一个UIViewController,它的视图中有UITextView。当用户选择文本时,会有Define系统菜单项使用UIReferenceLibra... 查看详情

如何从菜单栏中选择在文本框中显示特定文本

】如何从菜单栏中选择在文本框中显示特定文本【英文标题】:HowdoIshowaspecifictextinatextboxbychoisefromamenubar【发布时间】:2017-09-0818:46:11【问题描述】:我创建了一个菜单栏和一个文本框,我希望在文本框中显示属于在菜单中所做... 查看详情

获取我正在触摸的文本视图在哪个 UIcollectionviewcell

...题描述】:我有一个UICollectionView,每个单元格都有一个UITextView。我试图在长按TextView中的文本并从上下文菜单中选择删除时删除整个单元格。我知道我可以通过 查看详情

如何从表格的下拉菜单中删除先前选择的选项?

】如何从表格的下拉菜单中删除先前选择的选项?【英文标题】:Howtoremovethepreviouslyselectedoptionfromadrop-downmenuinatable?【发布时间】:2019-11-1504:45:31【问题描述】:我正在Angular7上制作一个项目。它有一个带有下拉列表的表格。下... 查看详情

如何从选择菜单中删除选项?

】如何从选择菜单中删除选项?【英文标题】:HowtoremovetheoptionsfromaSelectmenu?【发布时间】:2017-05-0318:46:58【问题描述】:我在一个div中有三个selectmenu对象。第一个与页面一起加载。当我在第一个中选择某些内容时,该值用于填... 查看详情

f.select + javascript 从选择菜单中添加和删除 div 样式

】f.select+javascript从选择菜单中添加和删除div样式【英文标题】:f.select+javascripttoaddandremovedivstylesfromselectmenu【发布时间】:2015-05-1802:46:20【问题描述】:我对Rails还很陌生,对Javascript也很陌生。我正在尝试使用f.select菜单更改div... 查看详情

从 iPad 上的 UITextView 键盘中删除“关闭键盘”键

】从iPad上的UITextView键盘中删除“关闭键盘”键【英文标题】:Removethe"Dismisskeybard"keyfromaUITextView\'skeyboardoniPad【发布时间】:2011-05-1114:22:20【问题描述】:我有一个带有UITextView的模态视图,用户可以输入一些文本(或不... 查看详情

Python从文件中读取文本时从字符串的开头和结尾删除[''] [重复]

】Python从文件中读取文本时从字符串的开头和结尾删除[\\\'\\\'][重复]【英文标题】:PythonRemoving[\'\']fromstartandendofstringwhenreadingtextfromafile[duplicate]Python从文件中读取文本时从字符串的开头和结尾删除[\'\'][重复]【发布时间】:2021-12... 查看详情

从 UITextView 获取文本

】从UITextView获取文本【英文标题】:GettextfromUITextView【发布时间】:2010-03-2803:28:54【问题描述】:是否可以从UITextView获取第一行文本。我查看了UITextView和NSString类引用,找不到任何可以完成此操作的方法。【问题讨论】:【参... 查看详情

添加文本和禁用滚动时如何使 UITextView 字段扩展?

】添加文本和禁用滚动时如何使UITextView字段扩展?【英文标题】:HowdoIgetUITextViewfieldtoexpandwhenaddingtextandscrollingisdisabled?【发布时间】:2018-08-1517:36:17【问题描述】:我在tableView单元格中使用UITextView来保存不同大小的文本内容,... 查看详情

为啥我的 UITextView 文本从开始时不显示并隐藏在导航栏下

】为啥我的UITextView文本从开始时不显示并隐藏在导航栏下【英文标题】:WhymyUITextViewtextisnotshowfromstartingandhideunderNavigationBar为什么我的UITextView文本从开始时不显示并隐藏在导航栏下【发布时间】:2016-01-0806:10:18【问题描述】:... 查看详情

无法从 Firefox 选择下拉菜单中删除轮廓/虚线边框 [重复]

】无法从Firefox选择下拉菜单中删除轮廓/虚线边框[重复]【英文标题】:Cannotremoveoutline/dottedborderfromFirefoxselectdropdown[duplicate]【发布时间】:2013-10-2709:17:21【问题描述】:我有一个向下的样式,但是在Firefox中单击虚线边框时无法... 查看详情

选择 js 中断选项和重复输入

...间】:2021-01-1413:48:24【问题描述】:**嘿**我在选择下拉菜单时遇到问题。每当我从下拉列表中单击任何选项时,一切都很好...但是,当我在字段上输入任何文本时,选项会变得很奇怪......看起来它正在重复我输入的文本输入。... 查看详情

选择下拉按钮时,TextField 焦点卡住

...0-02-1903:40:45【问题描述】:我有一个文本字段和一个下拉菜单,它们都由Bloc控制。我遇到的问题是,一旦选择了文本字段,如果用户随后尝试从下拉菜单中选择某些内容,它就不会放弃焦点。菜单出现,然后立即消失,焦点仍... 查看详情

UITextView 避免文本选择,但保留可点击的链接

】UITextView避免文本选择,但保留可点击的链接【英文标题】:UITextViewavoidtextselection,butkeeptappablelinks【发布时间】:2021-10-1401:39:15【问题描述】:我有一个弹出窗口,显示用户的服务条款和隐私政策,如何禁用文本选择但保持链... 查看详情