UITextField の編集を無効にする必要がありますが、コピー/貼り付け機能はそのままにしておきます
私が使うとき
textField.enabled = NO;
次に、機能のコピー/貼り付けが無効になります。
textField.editing = NO;
Xcode書き込み「「読み取り専用」属性を持つプロパティへの割り当ては許可されていません
UITextField の編集を無効にする必要がありますが、コピー/貼り付け機能はそのままにしておきます
私が使うとき
textField.enabled = NO;
次に、機能のコピー/貼り付けが無効になります。
textField.editing = NO;
Xcode書き込み「「読み取り専用」属性を持つプロパティへの割り当ては許可されていません
ここでヘルプを見つけることができます:
これは 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