2

すべてのdataDetectionTypesを設定したUITextViewがあります。電話番号テキストまたはカレンダー イベント テキストを長押しした後に表示されるアクション シートが正しく表示されないため、UILongPressGestureRecognizer を削除したいと考えています。キャンセル ボタンが表示されないため、UILongPressGestureRecognizer を削除する必要があります。誰かアイデアがありますか?

私のアクションシートにキャンセルボタンが表示されない理由を知っていますか? 助けてください!この問題は、iOS 5 および 6、および 3.5 インチ以下のディスプレイのデバイスで再現可能です。

4

1 に答える 1

0

上記のコメントで言われたことを拡張するつもりです。これを効果的に行うには、UITextView クラスのサブクラスを作成する必要があります。そうすることで、UIResponder のcanPerformAction:機能を実装できるようになり、ポップアップで使用できるオプションを選択的に決定できるようになります。以下のコードを変更して、必要な切り取り/コピー/貼り付け/選択... の任意の組み合わせを許可するか、ポップアップをすべて一緒に防止したい場合はNO、スーパー実装を呼び出さずにこの関数から戻るだけです。

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

ただし、これがサブクラスで行われていることを確認してください。

于 2013-11-13T13:17:30.190 に答える