UITextField如何禁用粘贴? [复制]
Posted
技术标签:
【中文标题】UITextField如何禁用粘贴? [复制]【英文标题】:UITextField how to disable the paste? [duplicate] 【发布时间】:2013-04-01 14:58:56 【问题描述】:UITextField如何禁用粘贴?
【问题讨论】:
这个答案是由PengOne PengOne在这个问题中给出的:***.com/questions/6701019/… 哦,对不起,以后不再重复这个问题。承诺。 【参考方案1】:覆盖canPerformAction:withSender:
方法以返回NO
用于您不想允许的操作:
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
if (action == @selector(paste:))
return NO;
if (action == @selector(select:))
return NO;
if (action == @selector(selectAll:))
return NO;
return [super canPerformAction:action withSender:sender];
在上面的代码中,您只需要为 paste 编写
另一种方式
-(BOOL)canPerformAction:(SEL)action withSender:(id)sender
UIMenuController *menuController = [UIMenuController sharedMenuController];
if (menuController)
[UIMenuController sharedMenuController].menuVisible = NO;
return NO;
同时检查This link
已编辑
在 ios 7 中,你可以这样做,,,
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
[[NSOperationQueue mainQueue] addOperationWithBlock:^
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:NO];
];
return [super canPerformAction:action withSender:sender];
对于 Swift 用户
override public func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool
if action == #selector(copy(_:)) || action == #selector(paste(_:))
return false
return true
如果您想在 TEXTFIELD 上打开日期选择器或选择器视图,请单击下面的代码。
在您的类中添加以下两个方法。
//Hide Menu View
override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool
if YOURTEXTFIELD.isFirstResponder
DispatchQueue.main.async(execute:
(sender as? UIMenuController)?.setMenuVisible(false, animated: false)
)
return false
return super.canPerformAction(action, withSender: sender)
//必须实现
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool
return false
【讨论】:
在 iOS 7 中不工作 这对我来说也不适用于 iOS7。 Last EDITED (i.e. NSOperationQueue) 在 iOS 7 中工作 NSOperationQueue 解决方案适用于 iOS8。谢谢 @iPatel - 我在模拟器中试过。在设备中它的工作。谢谢。以上是关于UITextField如何禁用粘贴? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何快速禁用 SkyFloatingLabelTextField 中的复制粘贴功能?