UITextField没有编辑,但用于复制/粘贴

时间:2013-01-26 17:30:46

标签: iphone xcode copy uitextfield paste

  

可能重复:
  Enable copy and paste on UITextField without making it editable

我需要在UITextField上禁用编辑,但保留复制/粘贴功能

当我使用

textField.enabled = NO;

然后禁用功能复制/粘贴;

textField.editing = NO;

Xcode写道“不允许使用'readonly'属性分配属性

1 个答案:

答案 0 :(得分:0)

您可以找到帮助here

这是UILabel的子类,您可以使用UITextField完全相似。并将类从UITextField更改为此类。

@implementation CopyableLabel


- (BOOL)canPerformAction:(SEL)action withSender:(id)sender {
    if(action == @selector(copy:)) {
        return YES;
    }
    else {
        return [super canPerformAction:action withSender:sender];
    }
}


- (BOOL)canBecomeFirstResponder {
    return YES;
}


- (BOOL)becomeFirstResponder {
    if([super becomeFirstResponder]) {
        self.highlighted = YES;
        return YES;
    }
    return NO;
}


- (void)copy:(id)sender {
    UIPasteboard *board = [UIPasteboard generalPasteboard];
    [board setString:self.text];
    self.highlighted = NO;
    [self resignFirstResponder];
}


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
    if([self isFirstResponder]) {
        self.highlighted = NO;
        UIMenuController *menu = [UIMenuController sharedMenuController];
        [menu setMenuVisible:NO animated:YES];
        [menu update];
        [self resignFirstResponder];
    }
    else if([self becomeFirstResponder]) {
        UIMenuController *menu = [UIMenuController sharedMenuController];
        [menu setTargetRect:self.bounds inView:self];
        [menu setMenuVisible:YES animated:YES];
    }
}


@end