6

有没有办法做到这一点?

我尝试将以下内容放入子类中:

- (BOOL)canBecomeFirstResponder 
{
    return YES;
}

但是当我向对象发送 becomeFirstResponder 消息时,它仍然没有成为第一响应者。

4

3 回答 3

2

对的,这是可能的。你应该:

  1. 覆盖becomeFirstResponder返回YES

  2. 设置userInteractionEnabledYES

  3. 添加一个UITapGestureRecognizer来处理水龙头。

  4. becomeFirstResponder从点击处理程序调用。

您甚至可以覆盖inputView以获得屏幕底部的输入控件。否则将一无所有。

于 2012-07-10T10:22:51.727 回答
0

这对我有用。

子类 UILabel 并覆盖这些方法:

- (BOOL)canBecomeFirstResponder {
        return YES;
    }

    - (BOOL)canPerformAction:(SEL)action
                  withSender:(id)sender
    {
        return (action == @selector(copy:));
    }

    - (void)copy:(id)sender {
        [[UIPasteboard generalPasteboard] setString:self.text];
    }

将手势添加到您的标签以检测点击。

UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(LongPressDetected:)];
[_messageLabel addGestureRecognizer:longPress];

处理手势事件,呈现一个带有所需帧的 UIMenuController:

- (void)LongPressDetected:(UILongPressGestureRecognizer*)gesture {

        [_messageLabel becomeFirstResponder];
        [[UIMenuController sharedMenuController] setTargetRect:_messageLabel.bounds inView:_messageLabel];
        [[UIMenuController sharedMenuController] setMenuVisible:YES animated:NO];
    }
于 2014-04-07T10:36:33.907 回答
0

我没有明确的答案,只有一些(也许是疯狂的)想法:你是否也尝试过覆盖becomeFirstResponder返回YES?它是否userInteractionEnabled也设置为YES

否则,将其设为自定义 UIButton 而不是自定义 UILabel ...

于 2010-11-06T19:40:06.480 回答