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