سؤال

بشكل افتراضي (على ما يبدو) ، يتيح Ikimagebrowserview السحب والإسقاط إلى المواقع في الباحث. أود إيقاف هذا السلوك ولكني غير متأكد من كيفية القيام بذلك. كنت أفكر في أنه ربما يكون تنفيذ بروتوكول NSDraggingDestination والتغلب عليه يمكن أن يحل هذا ، لكنه لم ينجح حتى الآن.

شكرا على اي مساعدة!

هل كانت مفيدة؟

المحلول

إذا كنت ترغب في تخصيص سلوك السحب والإفلات من Ikimagebrowserview ، فيمكنك تنفيذ - (NSUInteger) imageBrowser:(IKImageBrowserView *) aBrowser writeItemsAtIndexes:(NSIndexSet *) itemIndexes toPasteboard:(NSPasteboard *)pasteboard الطريقة في كائن مصدر بيانات المتصفح الخاص بك. سيتيح لك ذلك تحديد الأنواع والبيانات التي تريد وضعها على اللوح عند القيام بالسحب. إذا كنت ترغب في تعطيل السحب بالكامل ، فيجب أن تكون قادرًا على العودة 0 (عدد العناصر التي تريد سحبها).

نصائح أخرى

إذا كنت تستهدف الأسد ، فيمكنك الفئة الفرعية IKImageBrowserView وتجاوز draggingSession:sourceOperationMaskForDraggingContext: بروتوكول NSDraggingsource طريقة. لمنع عمليات السحب خارج طلبك فقط NSDragOperationNone إذا كان السياق NSDraggingContextOutsideApplication. خلاف ذلك ، أعد عمليات السحب التي تهتم بها. وبهذه الطريقة يمكنك عدم السماح بسحب سطح المكتب ، والبحثية ، وما إلى ذلك ، ولكن لا يزال يسمح بالجرح داخل عرض متصفح صورة التطبيق الخاص بك.

- (NSDragOperation)draggingSession:(NSDraggingSession *)session sourceOperationMaskForDraggingContext:(NSDraggingContext)context {
    [super draggingSession:session sourceOperationMaskForDraggingContext:context];

    switch (context) {
        case NSDraggingContextOutsideApplication:
            return NSDragOperationNone;
            break;

        case NSDraggingContextWithinApplication:
            return NSDragOperationAll;
            break;

        default:
            return NSDragOperationAll;
            break;
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top