限制特定UITextfield的复制,粘贴选项
我的UIView包含两个UITextField.I需要为一个textfield限制复制,粘贴选项。我不想限制为另一个。限制特定UITextfield的复制,粘贴选项
当我使用下面的代码时,这两个字段都受到复制,粘贴限制。
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
if ([UIMenuController sharedMenuController])
{
[UIMenuController sharedMenuController].menuVisible = NO;
}
return NO;
}
任何人都可以提供解决方案来解决我的问题。
创建UITextField的子类。在该子类,实现
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender { if (sel_isEqual(action, @selector(copy:))) { return NO; } return [super canPerformAction:action withSender:sender]; }
然后使用这个子类,你不希望能够复制在该领域,并使用常规的UITextField的一个,你可以从复制。从苹果
很好......但我不想为受限制的UITextfield显示任何菜单(剪切,复制,粘贴,选择等)。 – 2011-01-10 02:17:50
Explanantion:
如果响应 类实现请求的操作 并调用下一响应,如果它 没有这本 方法的默认实现返回YES。子类可以覆盖此方法以在当前状态上启用基于 的菜单命令;例如,如果 是一个选择项,则 将启用“复制”命令,如果粘贴板不包含 包含正确的 粘贴板表示类型的数据,则会启用“粘贴” 命令。
所以,解决方案是继承UITextView并正确返回。
下防止任意字符串长于待粘贴1个字符。然而,长度为1个字符的字符串将会通过(可能对某些人有用 - 不需要子类化)。
首先给你的文本字段的委托
myTextField.delegate = self; // OR [myTextField setDelegate:self];
然后将下面的方法添加到您的ViewController
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
if ([string length] > 1) {
return NO;
}
return YES;
}
我有非常完美的文本视图的随机的想法。没有理由为什么它不适用于文本字段。
我将以下内容添加到我想限制的文本字段中。
- 长按姿势识别(1点触摸)
- 长按姿势识别(2点触摸)
- 敲击手势识别器(2个抽头,1点触摸)
- 敲击手势识别器(3个抽头,1点触摸)
- 敲击手势识别器(1个抽头,2点触摸)
然后分配下面的代码给它。
- (IBAction)cancelTouch:(id)sender {
//do nothing
}
我现在仍然可以通过textview滚动,但长按或双击现在完全没有!
你有没有尝试过将`userInteractionEnabled`设置为`NO`?还是应该UITextView仍然是可编辑的? – 2011-01-10 14:04:04
@afEken我认为它应该是可编辑的 – KingofBliss 2011-01-11 06:36:35