gpt4 book ai didi

ios - UIMenuController 在 UILongGestureRecognizer 上不可见

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:50 25 4
gpt4 key购买 nike

我针对同一问题在 SO 上提到了各种帖子。但仍然无法得到解决方案。

我有子类UIButton,我有UILongGestureRecognizer。我的实现如下:

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
UILongPressGestureRecognizer *longGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[self addGestureRecognizer:longGesture];
}
return self;
}

- (BOOL)becomeFirstResponder
{
return YES;
}

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
return YES;
}

- (BOOL)canBecomeFirstResponder
{
return YES;
}

- (void)longPress:(UILongPressGestureRecognizer *)gesture
{
if (gesture.state == UIGestureRecognizerStateBegan)
{
NSLog(@"ButtonView: longPress: event called");
UIMenuController *menu = [UIMenuController sharedMenuController];
if (![menu isMenuVisible])
{
ButtonView *btn = (ButtonView *)gesture.view;
if (![btn becomeFirstResponder])
{
NSLog(@"couldn't become first responder");
return;
}

UIMenuItem *menuItem = [[UIMenuItem alloc] initWithTitle:@"Change Color" action:@selector(changeColor:)];
UIMenuController *menuCont = [UIMenuController sharedMenuController];
menuCont.arrowDirection = UIMenuControllerArrowDown;
menuCont.menuItems = [NSArray arrayWithObject:menuItem];
if([btn canBecomeFirstResponder])
{
[menuCont setTargetRect:btn.frame inView:btn.superview];
[menuCont setMenuVisible:YES animated:YES];
NSLog(@"menu visible....");
}
}
}
if (gesture.state == UIGestureRecognizerStateEnded || gesture.state == UIGestureRecognizerStateCancelled || gesture.state == UIGestureRecognizerStateFailed)
{
[self.layer setBorderColor:[UIColor clearColor].CGColor];
[self.layer setBorderWidth:0.0];
}
}

我已经覆盖了 becomeFirstRespondercanBecomeFirstResponder

重要提示:当我长按按钮时,我的日志消息 “菜单可见...” 正在记录,但我无法看到UIMenuController 可见。

我在上面的代码中还缺少什么吗?提前致谢。

最佳答案

在显示菜单之前添加这一行:

[self becomeFirstResponder];

并删除这段代码:

- (BOOL)becomeFirstResponder
{
return YES;
}

关于ios - UIMenuController 在 UILongGestureRecognizer 上不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19752844/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com