書上第184頁使用Cycript觸發按鈕無法成功套用在其他簡單的app上(例如Note app)


#1

環境:iOS10.2, HooperV4

需求:大神们下午好,我在iOSRE书第184页上卡关了,状况如下:
由于我成功完成书上mobileMail用cycript来调用[UIApp composeButtonClicked: [ComposeButtonItem composeButtonItem]] 可以唤起编辑邮件的页面,所以在信心稍为大增的情况下,随便找一个差不多简单的app 例如Note app 来尝试看看,毕竟每个app写法都有可能不同。

在我调试到UIApplication sendAction:to:from:forEvent书上说的断点,它在po $r0的时候第一次不会像书上一样得到ComposeButtonItem,而是印出他的上一层UIBarButtonItem。第二次就是例如得到RootViewController,所以第二次算没问题。

重点在于6.2.2一直可以得到ComposeButtonItem相关的类别资料,进而得到他的action,composeButtonClicked。但我只会得到我的action例如:shareButtonClicked和UIBarButtonItem,但是UIBarButtonItem裡面没有所谓的书上的+composeButtonItem的类方法可以去得到UIBarButtonItem的对象。
书上的成功呼叫是这样的:
[UIApp ,composeButtonClicked:[ComposeButtonItem composeButtonItem]]

所以我在Cycript上只能尝试用这样的方式去呼叫看看
[UIApp shareButtonClicked:[UIBarButtonItem]]
想当然尔无法成功唤起shareButtonClicked。我知道书上的按钮是在右下角,但我想那应该不是关键因素,重点是为何书上有拿得到ComposeButtonItem,而我只能直接拿到UIBarButtonItem,那就样我不就进入一条死路?请问大大们遇到只有拿得是UIBarButtonItem到这样的情况该如何可以成功唤起目标按钮?感谢提点!


#2

这个Mail的App肯定已经改动了呀,自己找吧