2012-07-19 32 views
0

我想添加一個UILongPressGestureRecognizer到UITextfield;然而,我似乎無法讓它表現得很好。我想要的是重寫默認的長按行爲(放大鏡和「粘貼」選項),但也保留在文本框中敲擊以輸入它的能力。使用下面的代碼,它仍然會顯示放大鏡,即使它進入了方法,它也不會有正確的狀態。有任何想法嗎?如何將UILongPressGestureRecognizer添加到UITextField?

- (void) addLongPressRecognizer: (UIView *) view 
{ 
    UILongPressGestureRecognizer *gestureRecognizer = [[UILongPressGestureRecognizer alloc] init]; 
    [gestureRecognizer addTarget:self action:@selector(textFieldLongPressed:)]; 
    gestureRecognizer.delegate = self; 
    [view addGestureRecognizer: gestureRecognizer]; 
    self.myGestureReconginzer = gestureRecognizer; 
} 

- (void) textFieldLongPressed:(UILongPressGestureRecognizer*)sender 
{ 
    if (sender.state == UIGestureRecognizerStateBegan) 
    { 
     [self.delegate textFieldLongPressed:self]; 
    } 
} 

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if(gestureRecognizer == self.myGestureReconginzer) 
    { 
     //I've tried it with and without the following line 
    // [self textFieldLongPressed:(UILongPressGestureRecognizer*) gestureRecognizer]; 
     return YES; 
    } 
    else if([gestureRecognizer class] == [UILongPressGestureRecognizer class]) 
    { 
     return NO; 
    } 
    return YES; 
} 

回答

0

嘗試增加這樣的事情你的UITextField子類:

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

這應該禁止粘貼選項。

相關問題