允许用户从UILabel中select文本来复制

我有一个UILabel,但我怎么能让用户select它的文本的一部分。 我不希望用户能够编辑文本,也不希望标签/文本框有边框。

UILabel是不可能的。

你应该使用UITextField 。 只需使用textFieldShouldBeginEditing委托方法禁用编辑。

您使用创build一个UITextView并使其可.editable为NO。 然后你有一个文本视图,其中(1)用户不能编辑(2)没有边界,(3)用户可以从中select文本。

一个穷人的复制和粘贴版本,如果你不能,或不需要使用文本视图,将添加一个手势识别器的标签,然后将整个文本复制到粘贴板。 除非使用UITextView否则不可能只做一部分

确保让用户知道它已被复制,并且支持单击和长按,因为它会吸引用户试图突出显示一部分文本。 以下是一些示例代码,以帮助您开始:

注册您的标签上的手势识别器,当你创build它:

 UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textTapped:)]; UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(textPressed:)]; [myLabel addGestureRecognizer:tap]; [myLabel addGestureRecognizer:longPress]; 

接下来处理手势:

 - (void) textPressed:(UILongPressGestureRecognizer *) gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateRecognized && [gestureRecognizer.view isKindOfClass:[UILabel class]]) { UILabel *someLabel = (UILabel *)gestureRecognizer.view; UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; [pasteboard setString:someLabel.text]; ... //let the user know you copied the text to the pasteboard and they can no paste it somewhere else ... } } - (void) textTapped:(UITapGestureRecognizer *) gestureRecognizer { if (gestureRecognizer.state == UIGestureRecognizerStateRecognized && [gestureRecognizer.view isKindOfClass:[UILabel class]]) { UILabel *someLabel = (UILabel *)gestureRecognizer.view; UIPasteboard *pasteboard = [UIPasteboard generalPasteboard]; [pasteboard setString:someLabel.text]; ... //let the user know you copied the text to the pasteboard and they can no paste it somewhere else ... } }