[Objective-C]编辑UILabel而不隐藏键盘

时间:2015-07-22 16:59:23

标签: ios objective-c

我试图在UILabel中复制内容但没有隐藏键盘,问题是当我在标签中显示复制菜单时,标签成为第一响应者并且键盘辞职,但我想这样做而不隐藏键盘,有没有办法做到这一点?

5 个答案:

答案 0 :(得分:4)

UILabel无法实现。

您应该使用UITextField。只需禁用编辑。

答案 1 :(得分:3)

AFAIK,你做不到。但我认为你可以解决这个问题。不是不隐藏键盘,为什么不跟踪当前活动的文本字段,然后在用户按下copy后激活它。您可以使用UIPasteboardChangedNotification了解用户何时按下copy。例如:

self.lastActiveTextField = aTextField

-(void)pasteBoardDidChange:(NSNotification*)notif
{
     [self.lastActiveTextField becomeFirstResponder];
}

答案 2 :(得分:0)

我想你看起来像这个项目。

UILabel与UIKeyInput协议实现

https://github.com/hackiftekhar/IQEditableLabel

答案 3 :(得分:0)

我认为,这是不可能的,任何时候都只能有一个第一响应者。如果由于另一个UI元素而显示键盘,那么当您尝试从UILabel复制内容时,操作系统必须将第一个响应者从其他元素传输到UILabel,因为UILabel不需要键盘,键盘将自动隐藏。因此,您必须更改元素以解决此问题,或使用可以解决问题的第三方UI元素。

答案 4 :(得分:-3)

每个UIView组件都有一个名为:canBecomeFirstResponder的方法。他是只读的,但您可以继承UI对象并覆盖getter:

- (BOOL)canBecomeFirstResponder {
    return false;
}

我没有做过测试,但如果"成为第一响应者"是问题,应该解决它。