2

重複の可能性:
UITextField を編集可能にせずにコピー アンド ペーストを有効にする

UITextField の編集を無効にする必要がありますが、コピー/貼り付け機能はそのままにしておきます

私が使うとき

textField.enabled = NO;

次に、機能のコピー/貼り付けが無効になります。

textField.editing = NO;

Xcode書き込み「「読み取り専用」属性を持つプロパティへの割り当ては許可されていません

4

1 に答える 1

0

ここでヘルプを見つけることができます:

これは 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
于 2013-01-26T17:37:01.887 に答える