2013-01-21 61 views
0

我必須禁用粘貼選項,當用戶長按UITextField.I有這個代碼,但它仍然不隱藏粘貼選項。如何在iOS中的menucontroller中禁用粘貼選項?

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { 

    if ([UIMenuController sharedMenuController]) 
    { 
     [UIMenuController sharedMenuController].menuVisible = NO; 

    } 
    return NO; 
} 

任何人都可以幫助我嗎?

+0

以任何機會,忘了該實例更改爲您的自定義類? – borrrden

+0

@borrrden NO有單個Viewcontroller的視圖w.r.t我的條件我顯示特定視圖 – iWatch

+0

然後在那裏放置一個斷點以確認此方法正在被調用。 – borrrden

回答

4

正如已經評論說..你需要「包括在完全相同的代碼也是UITextField的一個子類,然後使用這個類」

這樣的情況..創建新的文件..讓我們說TestPaste ..也是UITextField的子類

enter image description here

把你的代碼中實現文件(TextPaste.m)

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { 

    if ([UIMenuController sharedMenuController]) 
    { 
     [UIMenuController sharedMenuController].menuVisible = NO; 

    } 
    return NO; 
} 

現在。去你的NIB /故事板,點擊您UITextFiled和您使用的界面生成器改變的TextView類的TextPaste

enter image description here

+0

完美的解決方案!謝謝@TonyMkenu – iWatch

+0

這是一個醜陋的黑客。 @ Shubnank的解決方案應該是被接受的答案。 – Mojo66

0

使用此

@implementation UITextFiels (DisableCopyPaste) 

- (BOOL)canBecomeFirstResponder 
{ 
    return NO; 
} 

@end 
+2

這將禁用文本輸入以及... – borrrden

1

你必須創建一個新的Class-> UITextField的子類..然後在你的代碼/ xib中改變文本視圖類到您的自定義類..並在您的自定義TextField類的添加方法

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

它會工作,然後

+0

這應該是公認的答案。 – Mojo66

相關問題