Jon*_*an. 55 iphone objective-c uilabel
我有一个UILabel,但是如何让用户选择它的一部分文本.我不希望用户能够编辑文本,也不希望标签/文本字段具有边框.
Yur*_*ras 58
这是不可能的UILabel.
你应该用UITextField它.只需使用textFieldShouldBeginEditing委托方法禁用编辑.
Mic*_*ord 24
一个穷人的复制和粘贴版本,如果你不能,或者不需要使用文本视图,那就是在标签上添加一个手势识别器,然后将整个文本复制到粘贴板.除非你使用一个部分,否则不可能只做一部分UITextView
确保让用户知道它已被复制,并且您同时支持单击手势和长按,因为它会选择试图突出显示部分文本的用户.这里有一些示例代码可以帮助您入门:
创建时,在标签上注册手势识别器:
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textTapped:)];
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(textPressed:)];
[myLabel addGestureRecognizer:tap];
[myLabel addGestureRecognizer:longPress];
[myLabel setUserInteractionEnabled:YES];
Run Code Online (Sandbox Code Playgroud)
接下来处理手势:
- (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
...
}
}
Run Code Online (Sandbox Code Playgroud)