有没有办法做到这一点?
我尝试将以下内容放入子类中:
- (BOOL)canBecomeFirstResponder
{
return YES;
}
但是当我向对象发送 becomeFirstResponder 消息时,它仍然没有成为第一响应者。
有没有办法做到这一点?
我尝试将以下内容放入子类中:
- (BOOL)canBecomeFirstResponder
{
return YES;
}
但是当我向对象发送 becomeFirstResponder 消息时,它仍然没有成为第一响应者。
对的,这是可能的。你应该:
覆盖becomeFirstResponder
返回YES
。
设置userInteractionEnabled
为YES
。
添加一个UITapGestureRecognizer
来处理水龙头。
becomeFirstResponder
从点击处理程序调用。
您甚至可以覆盖inputView
以获得屏幕底部的输入控件。否则将一无所有。
这对我有用。
子类 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];
}
我没有明确的答案,只有一些(也许是疯狂的)想法:你是否也尝试过覆盖becomeFirstResponder
返回YES
?它是否userInteractionEnabled
也设置为YES
?
否则,将其设为自定义 UIButton 而不是自定义 UILabel ...