将手势识别器添加到UIBarButton

时间:2014-04-26 09:25:34

标签: ios objective-c uigesturerecognizer tweak theos

我正在尝试制作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

1 个答案:

答案 0 :(得分:0)

UIBarButtonItem不会从UIView继承,因此您无法直接向其添加手势识别器。您最好的选择是使用您自己使用-[UIBarButtonItem initWithCustomView:]创建的条形按钮项目替换条形按钮项目。但是既然你越狱了,也许你可以遍历工具栏的视图层次结构并找到那个按钮?