2014-08-26 3 views
0

Я разрабатываю приложение, поддерживающее IM. Ниже приведено UITextField, вверх - UITableView, отображающий исторические сообщения в пузырьках (UIView). Bubble добавляет longPressGesture, UIMenuController вызывается longPressGesture. Моя проблема в том, что textField firstResponder, показывает keyboad, тогда UIMenuController вызывается longPressGesture, как правило, он отлично работает. Но если в текстовом поле есть текст, в menuController отображается больше элементов, чем я ожидал, например «select», «selectAll».hide UIMenuController отображает «paste», «select», «selectAll»

Здесь сильфонных мой код:

-(BOOL)canPerformAction:(SEL)action withSender:(id)sender { 
    if (action == @selector(copyMenuAction:)|| 
     action == @selector(deleteMenuAction:)|| 
     action == @selector(resendMenuAction:)|| 
     action == @selector(forwardMenuAction:)) 
    { 
     return YES; 
    } 
    // else if (action == @selector(cut:)|| 
    //    action == @selector(copy:)|| 
    //    action == @selector(paste:)) 
    // { 
    //  return NO; 
    // } 
    else 
     return [super canPerformAction:action withSender:sender]; 

    return NO; 
    } 

    -(BOOL) canBecomeFirstResponder{ 
    return YES; 
    } 
+0

вы можете поделиться какой-то код? Как, где вы добавляете жест? – Rashad

ответ

0

Попытка добавить жест распознавани только в UITableView.

UILongPressGestureRecognizer *longGes = [[UILongPressGestureRecognizer alloc] 
    initWithTarget:self action:@selector(handleLongPress:)]; 
longGes.minimumPressDuration = 2.0; //seconds 
longGes.delegate = self; 
[self.tableView addGestureRecognizer: longGes]; 

Тогда в обработчике жест:

-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer 
{ 
    CGPoint p = [gestureRecognizer locationInView:self.tableView]; 

    NSIndexPath *indexPath = [self.myTableView indexPathForRowAtPoint:p]; 
    if (indexPath == nil) { 
     NSLog(@"long press on table view but not on a row"); 
    } 
    else { 
     if (gestureRecognizer.state == UIGestureRecognizerStateBegan) { 
      NSLog(@"long press on table view at row %d", indexPath.row); 
     } 
     else { 
      NSLog(@"gestureRecognizer.state = %d", gestureRecognizer.state); 
     } 
    } 
} 

Надежда это помогает .. :)

+0

Это то, что я уже сделал, он не работает – user2823918

+0

- это ваш textField в tableView? – Rashad

+0

Нет, это не так, есть разница? – user2823918

Смежные вопросы