2012-09-14 47 views
3

我正在製作消息應用程序。我想給用戶提供一個「複製」選項,當他們在UITextView中輸入他們的消息時。當用戶按下「複製」按鈕時,它正在複製該消息,但彈出窗口一次又一次地顯示,並且文本仍然可以選擇。複製全部文本後隱藏複製和取消選擇UITextView選項

我不知道如何控制這個。我粘貼了一些源代碼供您參考。

我爲UITextView寫了一個子類。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{ 
    NSLog(@"Action : %@", NSStringFromSelector(action)); 
    NSLog(@"Sender : %@", sender); 
    if (action == @selector(copy:)) 
    { 
     [self selectAll:self]; 
     //return [super canPerformAction:action withSender:sender]; 
     return YES; 
    } 
    else if (action == @selector(cut:)) 
    { 
     return NO; 
    } 
     return NO; 
} 
+0

任何人都可以請幫我解決這個問題嗎?提前致謝。 – Gopinath

+0

[這個問題](http://stackoverflow.com/questions/1920541/enable-copy-and-paste-on-uitextfield-without-making-it-editable)會幫助你的原因..如果不是那麼評論 –

+0

@ Maulik是的,你是對的。一旦我們通過按下複製按鈕從UITextView複製文本。這應該隱藏複製按鈕並取消選擇所有UITextview文本。你能幫我麼? – Gopinath

回答

0

如果您使用的是iOS5的

UITextView採用UITextInput協議,其中有一個selectedTextRange屬性。將物業設置爲零:

在最後的return NO之上添加以下代碼。

self.selectedTextRange = nil; 

希望這有助於

+0

感謝您的回答和鏈接。我從那裏得到了更多的想法。我已經解決了我的問題。再次感謝。 – Gopinath

+0

我接受了你的回答。但我沒有用這種方式。你能告訴我如何使用UITextView。 K我會從Google看這個。無論如何謝謝你的朋友。我希望你以後能幫助我。再次感謝。 – Gopinath

1

我已經解決了我的問題。我用下面的代碼來解決。

- (BOOL)canPerformAction:(SEL)action withSender:(id)sender 
{ 
    if (action == @selector(copy:)) 
    { 
     [self selectAll:self]; 

     return YES; 
    } 
    else if (action == @selector(cut:)) 
    { 
     return NO; 
    } 
     return NO; 
} 


- (void)copy:(id)sender 
{ 
    UIPasteboard *pastBoard = [UIPasteboard generalPasteboard]; 
    [pastBoard setString:self.text]; 
    self.selectedTextRange = nil; 
    [self resignFirstResponder]; 
} 

感謝Mr.Vimal Venugopalan and Mr.Mrueg。它爲我工作。這對一些人會有幫助。