0

我有以下代码在 iOS 5.1 上运行良好,可以替换工具栏上的按钮:

[(UIToolbar*)toolbar setItems:itemsArray]; 

但是编译后的应用程序在 iOS 6 上不起作用。我已经用 xXode 4.5 编译了支持 iOS 6 的源代码,但错误是一样的:

2012-09-27 16:31:13.537 Linux[2633:907] -[UIWebFormAccessory setItems:]: unrecognized selector sent to instance 0x1d886ad0
2012-09-27 16:31:13.540 Linux[2633:907] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[UIWebFormAccessory setItems:]: unrecognized selector sent to instance 0x1d886ad0'
*** First throw call stack:
(0x361032a3 0x3441397f 0x36106e07 0x36105531 0x3605cf68 0x775c5 0x33bbda6f 0x360d85df 0x360d8291 0x360d6f01 0x36049ebd 0x36049d49 0x365862eb 0x37428301 0x7538d 0x75328)
libc++abi.dylib: terminate called throwing an exception
(lldb) 

如何解决问题?

链接问题:如何在 iOS 6 上的 UIWebView 键盘下替换工具栏上的按钮?

非常感谢您的帮助!

4

3 回答 3

1

即使它是 a UIToolbar(可能不再是),您显然是在尝试调用一个不存在的方法(或“发送消息”)。解决方案是不要这样做,因为一旦你足够努力,该方法就不会凭空出现。

可能有另一种方法可以通过在此未记录类型上找到另一种拟合方法来继续执行您正在尝试做的事情。然而,也许有一天它也会像刚刚破裂的那样破裂。如果他们没有记录某些内容,是的,这意味着您仍然可以使用它(至少在您将其发送以供审查之前),但这也意味着它可能随时损坏。

一个长期的解决方案是找到一种方法来调出您自己可以控制的界面。知道你想在哪里集成,我认为这并不容易。我想我几天前在 Stack Overflow 上看到了另一个关于此的问题,说要检测触摸,停止编辑并自己接管 UI(尽管它在光标定位、复制/粘贴菜单等方面并不能很好地发挥作用) .

无论哪种方式,您都必须设计一个不那么脆弱的新解决方案。

于 2012-09-27T14:15:03.327 回答
0

您确定这种特定情况下的工具栏实际上是 UIToolbar 吗?估计是选角问题。

我在我的一门课上做了以下事情,它绝对适用于 iOS6

NSMutableArray *items = [NSMutableArray arrayWithArray: self.topToolbar.items];
[items insertObject:barButtonItem
            atIndex:0];
self.topToolbar.items = items;
于 2012-09-27T13:40:32.890 回答
0

UIWebFormAccessory 不是 iOS6 上的 UIToolbar。如果您想弄乱表单附件工具栏,请查看相关问题的“findVirginWebKeyboardToolbar”答案:https ://stackoverflow.com/a/12865353/199267

于 2012-10-12T18:59:44.480 回答