كيف أعرف متى فشلت في تحميل الصفحة في uiwebview بدلا من أن يتم "إيقاف" من قبل المستخدم؟

StackOverflow https://stackoverflow.com/questions/1243854

سؤال

لدي UIWebView ضمن طلبي الذي أستخدمه لتوفير وظيفة تصفح الويب.

لدي زر على شريط الأدوات الذي يدعو

-(void)stopLoading;

على uiwebview. المشكلة مع هذا هو أنه عند إرسال هذه الطريقة إلى طريقة العرض على الويب، يتلقى المندوب

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error;

رسالة. الخطأ المصاحب لهذه المكالمة هو: تعذر إكمال العملية. (خطأ nsurlerrordomain -999.)

يمكنني أيضا استخدام رسالة DidFailload لمعرفة ما إذا كانت الصفحة فشلت فعلا في التحميل - وفي هذه الحالة، أقوم بعرض رسالة تنسيق HTML للمستخدم لتوصيل هذا الفشل لهم.

لذلك المشكلة هي أنه إذا كان المستخدم يضرب زر التوقف، فسيتم عرض صفحة الخطأ بدلا من إظهار أي أجزاء من الصفحة التي تم تحميلها قبل إيقافها.

كنت آمل أن تضبط NSError.h عن قائما على رموز الخطأ التي يمكنني مقارنتها مع - ولكن يبدو أنني سأضطر إلى جعل بلدي بناء على ملاحظات رموز الخطأ التي تظهر في سجلاتي - وهو أقل من مثالية، لأنها يمكن أن تتغير في المستقبل ...

أي إقتراحات ستكون رائعة، شكرا.

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

المحلول 2

أفضل طريقة يمكن أن أجدها لحل هذا هو إنشاء Enum باستخدام رموز الخطأ التي قدمها WebView.

لا يبدو أنهم سوف يتغيرون، ولكن إذا فعلوا ذلك، حسنا.

لذلك الآن، في طريقة الحمل الخاصة بي، أقارن رمز الخطأ ببساطة من كائن الخطأ مع تعيني، وأستطيع أن أرى ما حدث - يبدو كيندا مثل هذا:

typedef enum {  
    BrowserErrorHostNotFound = -1003,
    BrowserErrorOperationNotCompleted = -999,
    BrowserErrorNoInternetConnection = -1009
} BrowserErrorCode;

نصائح أخرى

يتم تعريف رموز الأخطاء هذه في nsurlerror.h، في المؤسسة

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