我正在尝试制作Notes(默认应用)调整,并希望将手势识别器添加到 UIBarButton。 但是当我测试时,UIBarButton-view似乎不识别手势识别器。有人能帮助我吗?
_shareButtonItem是一个UIBarButton实例和类'NotesDisplayController'的成员变量。
%hook NotesDisplayController
-(void)viewWillAppear:(BOOL)view {
UIBarButtonItem* hookbtn;
object_getInstanceVariable(self, "_shareButtonItem", (void**)&hookbtn);
UILongPressGestureRecognizer *recg = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[[hookbtn valueForKey:@"view"] addGestureRecognizer:recg];
[recg release];
%orig;
}
%new
- (void)longPress:(UILongPressGestureRecognizer*)gesture {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"longpress" message:@"longpress" delegate:nil cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
[alert show];
}
%end
答案 0 :(得分:0)
UIBarButtonItem
不会从UIView
继承,因此您无法直接向其添加手势识别器。您最好的选择是使用您自己使用-[UIBarButtonItem initWithCustomView:]
创建的条形按钮项目替换条形按钮项目。但是既然你越狱了,也许你可以遍历工具栏的视图层次结构并找到那个按钮?