0

UILongPressGestureRecognizerをUITextfieldに追加しようとしています。しかし、私はそれを適切に動作させることができないようです。私が欲しいのは、デフォルトの長押し動作(虫眼鏡と「貼り付け」オプション)をオーバーライドするだけでなく、入力するためにテキストフィールドをタップする機能を維持することです。以下のコードでは、虫眼鏡が表示され、textFieldLongPressedメソッドに入っても、正しい状態になることはありません。何か案は?

- (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;
}
4

1 に答える 1

0

UITextFieldサブクラスに次のようなものを追加してみてください。

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

これにより、貼り付けるオプションが無効になります。

于 2012-07-19T18:22:11.127 に答える