"অপেক্ষা_ক্ষেত্রে: উত্তর পেতে ব্যর্থ: 10004003"?


94

আমি এই ক্রিপ্টিক ত্রুটিটি প্রথমবার পেয়েছি (এবং কেবলমাত্র প্রথমবারে) নিম্নলিখিত কোডের লাইনের কারণে আমার ভিউ লোড হয়েছে:

- (void)viewWillAppear:(BOOL)animated
{
    [textField becomeFirstResponder];
}

এখানে একটি লক্ষণীয় (~ 3 - 4 সেকেন্ড এমনকি সিমুলেটারেও) বিলম্ব রয়েছে যার কারণে আমার অ্যাপ্লিকেশনটিকে প্রতিক্রিয়াহীন মনে হচ্ছে। কেউ কীভাবে এটি ঠিক করতে জানেন? অ্যাপলের সাইটে, বা এখানে বা গুগলের কোনও সমাধান আমি এতে কোনও নথিপত্র পাচ্ছি না।

আশ্চর্যের বিষয় হল, আমি যদি -viewDidAppear:তার পরিবর্তে লাইনটি রাখি তবে বিপরীত পরিস্থিতি ঘটে -viewWillAppear:; এটি হ'ল, ত্রুটিটি মুদ্রণের পরিবর্তে কেবল কীবোর্ডটি প্রথমবার প্রদর্শিত হবে এবং আবার কখনও হবে না, ত্রুটিটি প্রথমবার প্রিন্ট করা হয় না তবে প্রতিবারের পরে। এটি আমার জন্য বড় মাথাব্যথার কারণ হয়ে দাঁড়ায়।

উত্তর:


103

ওভাররাইড করুন -viewDidAppear:, না -viewWillAppearএবং কল করতে ভুলবেন না [super viewDidAppear:]। আপনি যখন স্ক্রিনে নেই তখন অ্যানিমেশনগুলি সম্পাদন করা উচিত নয় ("উপস্থিত হবে")। এবং -viewDidAppear:দস্তাবেজগুলি ব্যাখ্যা করে যে আপনাকে অবশ্যই কল করতে হবে superকারণ তাদের নিজস্ব কাজ করার আছে।


এটি আমার পছন্দ মতো প্রতিক্রিয়াশীল নয় (প্রতিটি সময় কীবোর্ড দেখানোর জন্য এখনও কিছুটা বিলম্ব রয়েছে) তবে এটি কৌশলটি মনে হচ্ছে do
মাইকেল 18

4
আমি যে ল্যাগ সম্পর্কে কথা বলছি তা আমি জানি। আমি এটিকে অনেক অ্যাপে দেখেছি। আপনি যদি ইতিমধ্যে না থাকেন তবে আপনি কল করার আগে (পরে বরং) কল করার চেষ্টা করতে পারেন - [সুপার ভিউডিড অ্যাপয়ার:]। এটির কোনও প্রভাব নাও থাকতে পারে তবে অ্যানিমেশনটি পরবর্তী ইভেন্টের চেয়ে একই ইভেন্ট লুপে শুরু হতে পারে। আমি নিশ্চিত করতে এখনও এটি নিয়ে পরীক্ষা নিরীক্ষা করি নি।
রব নেপিয়ার

14
এটি সমস্যার সমাধান করে না। আপনি যদি [সুপার ভিউডিডঅ্যাপার: অ্যানিমেটেড] কল করার পরে ভিউডিড অ্যাপে কোনও ইউআইএলআরলেটশিট ফেলে দেন তবে আপনি প্রতি বার একই বার্তাটি শেষ করবেন। তবে, আপনি যদি পরে এটি ফেলে দেন তবে কোনও সমস্যা নেই to সুতরাং পারফরম্যান্সের সাথেই উইলসিলেক্টর সম্ভবত ফিক্স করার উপায়, বা আপনি বার্তাটি উপেক্ষা করতে পারেন, এটি কোনওভাবেই কোনও এসডিকে বাগ হিসাবে দেখা যাচ্ছে, আপনার কোড নিয়ে কোনও সমস্যা নয়।
বিলি গ্রে

9
@ বিলি, অ্যানিমেশনগুলি সম্পন্ন করার আগে একটি ইউআইএলআরলেটশিট নিক্ষেপ করা সম্ভবত একই সমস্যার কারণ হতে পারে। যে কোনও ক্ষেত্রে আপনি ভিউডিডি অ্যাপের ভিতরে একটি শীট রাখছেন সম্ভবত খুব তাড়াতাড়ি সম্ভবত আপনার সঞ্চালনকারী নির্বাচন করা উচিত: পরে ডেলি: পরবর্তী লুপটিতে ইউআইএলআরলেটশিটটি চাপতে হবে। এটি এসডিকে কোনও বাগ নয়, যদিও এখানে বিবরণগুলি খুব কম দলিলযুক্ত। -ভিউউইলঅ্যাপিয়ারে অ্যানিমেশনগুলি সম্পাদন করা হ'ল মূল কোডটিতে বাগ। উভয় ক্ষেত্রেই, আপনার বার্তাটি উপেক্ষা করা উচিত নয়। এটি বিজোড় ভিজ্যুয়াল আর্টিক্টসগুলিতে বাড়াতে পারে (অ্যানিমেশনটির এক বিস্ময়কর পাশের স্লাইড)।
রব নেপিয়ার


22

আমি দ্রুত যখন একইরকম ত্রুটি পেয়েছিলাম:

  1. একটি মডেল ভিউ খারিজ করা হচ্ছে
  2. মূল দৃশ্য আপডেট করা হচ্ছে
  3. একটি নতুন মডেল ভিউ উপস্থাপন করা হচ্ছে

আমি লক্ষ্য করেছি আমি এটি কেবল সিমুলেটারে পেয়ে যাচ্ছি ডিভাইসে নয়। অতিরিক্তভাবে, আমি একটি অসীম লুপতে ধরা পড়ছিলাম।

আমার সমাধানটি ছিল নতুন মডেল ভিউ উপস্থাপনে বিলম্ব করা। দেখে মনে হচ্ছে দ্রুত ভিউ হায়ারার্কি আপডেট করার ফলে অ্যাপলের কোডে রেস কন্ডিশনের কিছুটা অবস্থা ঘটেছে।

এটি মাথায় রেখে, এটি চেষ্টা করুন:

     - (void)viewDidAppear:(BOOL)animated{

            [super viewDidAppear:animated];
            [textField performSelector:@selector(becomeFirstResponder) withObject:nil afterDelay:0.1];
  }

আপনার কোনও ইউআইটিেক্সটফিল্ডের জন্য কীবোর্ড উপস্থাপন করতে সমস্যা হতে পারে যা এখনও স্ক্রিনে অন্তর্নিহিত। এটি আমার মতো সমস্যা তৈরি করতে পারে।

এছাড়াও, আপনি কিছু ক্ষেত্রে, কীবোর্ড উপস্থাপন করার আগে আপডেট করার জন্য শ্রেণিবিন্যাসের সময় দিতে বিরতি দিন।

আশাকরি এটা সাহায্য করবে.


4
মডেলগুলির সাথে আপনার যে সমস্যা ছিল, আপনি কি নতুন মডেল উপস্থাপনের আগে মডেলকে বরখাস্ত করার জন্য অপেক্ষা করেছিলেন? সময়ের একটি স্বেচ্ছাসেবী সময়ের অপেক্ষা করা এবং এটি শেষ হওয়ার আশা করার পরিবর্তে, আপনি মডেলভিউ কনট্রোলারটিতে -ভিউডিডিডিস্পিয়ারকে ওভাররাইড করে জানতে পারবেন। এটি মডেলের পিতামাতাভিউ নিয়ন্ত্রণকারীকে আবার কল করতে পারে বা কোনও বিজ্ঞপ্তি পোস্ট করতে পারে। মূলটি বুঝতে হবে যে বরখাস্ত করার জন্য কিছু জিজ্ঞাসা করার অর্থ এটি এখনও শেষ হয়ে যায়নি এবং সাধারণভাবে একে অপরের শীর্ষে জিনিস সঞ্চার করা উচিত নয়। -ভিউ উইল / ডিডিস্প্পিয়ার সাধারণত জিনিসগুলি কখন ঘটে থাকে তা জানার জন্য আপনার সর্বোত্তম উপায়।
রব নেপিয়ার

প্রথম মডেল ভিউটি ফটো বাছাইকারী এবং আমি ফটো পিকার কল কল ব্যাক পদ্ধতিতে সমস্ত কিছু পরিচালনা করি। আপনার অধিকার, আমার ভিডডিআইপিয়ারের মধ্যে পরবর্তী মোডাল ভিউ চালু করার কোড থাকা উচিত। এটি একটি ভাল সমাধান এবং সম্ভবত প্ল্যাটফর্ম নির্বিশেষে সমস্যা সমাধান করবে।
কোরি ফ্লয়েড

12

আপনি কেবলমাত্র মূল থ্রেডে ইউআইয়ের সাথে কথোপকথন করছেন কিনা তা পরীক্ষা করুন। আমি পেয়েছিলাম wait_fences: failed to receive reply: 10004003যখন আমি সেখানে বসা ছিল একটি UIAlertView 5 সম্পর্কে সেকেন্ডের জন্য দেখানো হবে তার জন্য কারণ প্রাসঙ্গিক কোড একটি পটভূমি থ্রেডে মৃত্যুদন্ড দেয়া হয়েছে অপেক্ষা করছে। আপনার কোডটি ব্লকে রেখে এবং মূল থ্রেডে প্রেরণ করে আপনি এটি নিশ্চিত করতে পারেন:

dispatch_async(dispatch_get_main_queue(), ^{
    if (!success) {
        // Inform user that import failed
        UIAlertView * importFailedAlert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"ErrorTitle5", @"Import failed") 
                                                                     message:NSLocalizedString(@"Error5", @"Something went wrong") 
                                                                    delegate:nil 
                                                           cancelButtonTitle:NSLocalizedString(@"OK", nil) 
                                                           otherButtonTitles:nil];
        [importFailedAlert show];
    }
});

9

গুগলে খুঁজে পাওয়া যায় এমন সব কিছু চেষ্টা করার পরেও এবং এর কোনওটিই কাজ করে না, এটিই আমার সমস্যার সমাধান করেছে। মূলটি হ'ল আমি এই জিনিসটি উইলডিজিটবিটোনআইডেক্স প্রতিনিধি পদ্ধতিতে করছি। আমি অন্য কোথাও এটি করার আগে।

- (void)alertView:(UIAlertView *)alertView willDismissWithButtonIndex:(NSInteger)buttonIndex
{
    [myTextField resignFirstResponder];
    [myTextField removeFromSuperview];  
    [myTextField release];  
}

8

আপনার যদি ViewDidLoad এ নিম্নলিখিত লাইনটি থাকে তবে এটি এই বার্তাটির কারণ হতে পারে। নিম্নলিখিত লাইন মন্তব্য করুন।

[[UIApplication sharedApplication] setStatusBarHidden:YES]; //This line should be commented

(পরিবর্তে আপনি অ্যাপ্লিকেশন প্লাস্ট ফাইল থেকে স্ট্যাটাস বারটি অক্ষম করতে পারেন)।


7

কয়েকটি পরীক্ষার পরে বড় নিয়মটি হল: "অ্যানিমেটেড বরখাস্ত বা অ্যানিমেটেড শোয়ের আগে অ্যানিমেশনটি সম্পাদন করবেন না"।

উদাহরণ স্বরূপ:

  • -dismissModalViewControllerAnimated:YESএকটিের ডেলিগেশন কলব্যাকের পরে কল করবেন না ( কলব্যাকটি ব্যবহারের আগে সতর্কতা দর্শন থেকে দূরে হয়ে যাওয়া অপেক্ষা করুন )UIAlertView -alertView:willDismissWithButtonIndex:-alertView:didDismissWithButtonIndex:
  • becomeFirstResponderআপনার দৃশ্য নিয়ামক স্ক্রিনে আসার আগে কীবোর্ডটি ( ) দেখানোর চেষ্টা করবেন না ।

খারাপ জিনিস হতে পারে।

আশা করি এটি কার্যকর হবে ;-)


আমি ক্লিক করা বাটনঅ্যান্ডইন্ডেক্স ব্যবহার করছিলাম, এবং সতর্কতামূলক দৃশ্য বরখাস্ত হওয়ার আগে একগুচ্ছ পাঠ্যক্ষেত্র তৈরি করতাম। এটিকে ডিমেডিসিজট উইথবুটনআইডেক্সে সরিয়ে নেওয়া অবশ্যই এই সতর্কতাগুলি থেকে মুক্তি পেতে সহায়তা করেছিল! ধন্যবাদ!
নিতিন আলাবুর

5

এটি আমার পক্ষে অ্যানিমেশন বা দেরি না করে তত্ক্ষণাত কীবোর্ডটি দেখানোর জন্য কাজ করেছিল।

আসুন textFieldএকটি উদাহরণ ভেরিয়েবল MyViewController(এর একটি সাবক্লাস UIViewController) হওয়া যাক।

ফোন করুন [textField becomeFirstResponder]মধ্যে initWithNibName:bundle:(একটি উপশ্রেণী জন্য UIViewController) অথবা initWithStyle:(একটি উপশ্রেণী জন্য UITableViewController), নেই viewDidLoad। যেমন:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        [textField becomeFirstResponder];
    }
    return self;
}

অথবা, আরম্ভ করার পরে তবে এটিকে চাপ দেওয়ার আগে কল করুন UIViewController। যেমন:

MyViewController *viewController = [[MyViewController alloc] init];
[viewController.textField becomeFirstResponder];
[self.navigationController pushViewController:viewController animated:YES];
[viewController release];

মজাদার. আপনি কি নিশ্চিত যে এটি সর্বদা কাজ করে? আমার উদ্বেগ হ'ল আপনি রেফারেন্স দিচ্ছেন না view, তাই এটি নিশ্চিত নয় যে নিব ফাইলটি লোড হয়েছে। যদি textFieldআইবিআউটলেট হয় তবে আমি মনে করি এটি এই মুহুর্তে শূন্য হবে।
রব নেপিয়ার

5

আপনি করেছেন [textfield becomeFirstResponder];

এবং আপনি আপনার কোডের টেক্সটফিল্ড থেকে মান পাওয়ার পরে, করুন [textfield resignFirstResponder];। এটা আপনাকে সাহায্য করবে, আমি মনে করি।


4

আপনি যদি বর্তমান আইফোন সিমুলেটর ৪.০ চালাচ্ছেন তবে অ্যানিমেশনগুলিতে 1-2 সেকেন্ড ল্যাগের সাথে স্ক্রিনটি ঘোরানোর সময় (বা স্ক্রিনটি ঘোরানোর পরে অ্যানিমেট করার সময়) এই ত্রুটি বার্তাটি প্রায়শই উপস্থিত হয়।

এটি সিমুলেটারের এই সংস্করণে একটি বাগ এবং এটি শীঘ্রই ঠিক করা উচিত।


আইওএস 4 সিমুলেটর বাগ সম্পর্কে তথ্যের জন্য ধন্যবাদ। একই প্রকল্পের জন্য, wait_fencesবার্তাটি 3.1 সিমুলেটারে দেখা যায় নি
ওহহ

3

আরও তথ্যের জন্য এখানে দেখুন: http://www.iphonedevsdk.com/forum/iphone-sdk-development-advanced-discussion/17373-wait_fences-failed-receive-reply-10004003-a.html

আপনার সমস্যা সম্পর্কিত।


সহায়তার জন্য ধন্যবাদ, তবে দুর্ভাগ্যক্রমে আমি এই পৃষ্ঠায় আমার সমস্যার সমাধান খুঁজে পাচ্ছি না। "তার পিতামাতা / সুপার দর্শনের আগে একটি মতামত (যেমন। ইউআইএলআর্টভিউ) তৈরি করা হবে বলে মনে হয়।" উপরের কোডে এটি হওয়া উচিত নয়, তাই না?
মাইকেল

3

ওভাররাইড viewDidappear, না viewWillAppear:

-(void) viewDidAppear:(BOOL) animated
{
 [super viewDidAppear:animated];
 [myTextField becomeFirstResponder];
}

3

আমি এই ইউআইএলআর্টভিউ কোডের মাধ্যমে এটি একের পর এক অনুকরণ করতে পারি।

   UIAlertView *alert = [[UIAlertView alloc]
                   initWithTitle:NSLocalizedString(@"defineTitle",@"defineTitle")
                         message:NSLocalizedString(@"defineBody", @"defineBody")
                        delegate:self
               cancelButtonTitle:NSLocalizedString(@"Ok", @"Ok")
               otherButtonTitles:nil];
   [alert show];

লোকালাইজেবল স্ট্রিংস ফাইলে যখন এনএসলোক্যালাইজড স্ট্রিং সংজ্ঞায়িত করা হয়নি তখন পাঠ্যগুলি অনুসন্ধান করতে অনেক সময় লাগবে, তাই সতর্কতাটি দেখাবে এবং "অপেক্ষা_ক্ষেত্র: উত্তর পেতে ব্যর্থ হয়েছে: 10004003" দেখানো হবে।

আমার জন্য আমাকে কেবল স্থানীয়করণযোগ্য.স্ট্রিং ফাইলগুলিতে পাঠ্যগুলি যুক্ত করতে হয়েছিল এবং আমার সমস্যাগুলি সমাধান করা হয়েছিল। অন্য ঘটনাগুলির জন্যও এটি হতে পারে?


1

এছাড়াও ইউআইএলআর্টভিউয়ের সাথে। আমার যে বিষয়টি সমাধান করেছিল তা হ'ল নিচে পদত্যাগ করা, যেমন আগে উল্লিখিত গুদামাগারগুলি।

- (void)didPresentAlertView:(UIAlertView *)alertView
{
    [txtListingPassword becomeFirstResponder];
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
    [txtListingPassword resignFirstResponder];
}

ইউআইএলআর্টভিউ ডেলেগেটের অন্যান্য প্রতিনিধিরা সমস্যাটি সমাধান করেনি।


1

সমস্যাগুলি হ'ল অ্যাপলের কোডে একটি রেসের শর্ত রয়েছে। সাধারণত, এটির ভুল ইউআই আপডেটগুলির সাথে কিছু করতে হবে।

আমার অভিজ্ঞতায় আপনি হয় সুপারকে ভিউডিডঅ্যাপার, ভিউওয়েল অ্যাপয়ার ইত্যাদিতে ডেকে আনেননি বা ভিউডিডলয়েড বা ভিউউইল অ্যাপায়ারে কোনও ইউআইএলআর্টভিউ প্রদর্শনের চেষ্টা করছেন।

আপনি যখন কোনও ইউআইএলআর্টভিউ যুক্ত করেন, তখন ফ্রেমওয়ার্কটির জন্য আপনার পিতামাতার দৃশ্যের একটি রেফারেন্স প্রয়োজন। তবে আপনি যদি ভিউইল অ্যাপয়ার বা ভিউডিডলডে থাকেন তবে দৃশ্যটি আসলে প্রদর্শিত হয় না ... আপনার কোডটি ভিডড অ্যাপে সরানো বিবেচনা করা উচিত যেখানে ইউআইএলআর্টভিউ দ্বারা দৃশ্যটি ব্যবহারের জন্য প্রস্তুত।


0

পাঠ্য ক্ষেত্রটি কি সেই দৃশ্যের মধ্যে বা অন্য কোনও কিছুর মধ্যে রয়েছে? আপনি কেবলমাত্র সেই দৃশ্যের মধ্যে থাকা কিছুকে 'ফার্স্টরেপসন্ডার' প্রেরণ করতে পারেন। যদি এটি অন্য কোনও উইজেটের উপাদানগুলিতে সঞ্চিত থাকে তবে আপনার এই উইজেটে প্রথম প্রতিক্রিয়াশীল স্থিতি স্থাপন করা উচিত নয়, বরং তৈরি করা উইজেটে in উদাহরণস্বরূপ, আপনি যদি কোনও সতর্কতা দৃশ্যে পাঠ্য ক্ষেত্রটি যুক্ত করে থাকেন, কারণ শোটি তাত্পর্যপূর্ণভাবে ঘটে থাকে, আপনি যখন ফার্স্টরেসপন্ডার বলবেন তখনই এটি আপ না হবে। (আদর্শভাবে, আপনার নিজের সতর্কতা দর্শন শ্রেণি থাকতে হবে এবং এর মধ্যে পাঠ্য ক্ষেত্রটি সংজ্ঞায়িত করতে হবে, এবং যখন এই দৃশ্যটি ভিডডিপায়ারটি গ্রহণ করবে, আপনি সেই সময়ে পাঠ্যক্ষেত্রটিকে প্রথম প্রতিক্রিয়াকারী হিসাবে সেট করবেন))


0

আমি বার্তাটিও পাই wait_fences: failed to receive reply: 10004003এবং আমার viewWill...এবং viewDid...পদ্ধতিগুলি বার্তা প্রেরণ ছাড়া কিছুই করে না super। আমার ক্ষেত্রে এটি ঘটে যখন UIAlertViewআমার GameViewControllerএবং ব্যবহারকারীটির পরিবর্তে আইফোন রাউন্ড ডিভাইস বোতাম টিপুন এবং তারপরে অ্যাপটিতে ফিরে আসে a এটি আমার হাত থেকে দেখছে।


0

সতর্কতা বা অ্যাকশনশিটগুলি মূল থ্রেডগুলিতে দেখানো উচিত ... সুতরাং যদি আপনি যদি কোনও সিঙ্ক্রোনাস সংযোগ তৈরি করেন এবং সেই অপারেশনটি অন্য অপারেটিংয়ের ভিত্তিতে এবং সেই অপারেশন থেকে প্রাপ্ত আউটপুটের ভিত্তিতে সতর্কতা প্রদর্শন করেন তবে আপনি এই ত্রুটি বার্তাটির জন্য অপেক্ষা_ফেন্স পাবেন: ব্যর্থ উত্তর পান: 10004003। আপনি যেমন কিছু করতে পারেন ....

[self performSelectotOnMainThread:@selector(handleOutput:) withObject:output waitUntilDone:YES/NO];

এবং পরামিতি হিসাবে আউটপুট প্রতিক্রিয়া স্ট্রিং পাস হ্যান্ডেল আউটপুট পদ্ধতিতে সতর্কতা প্রদর্শন করুন।


0

সমাধান এখানে!

আমারও ত্রুটি ছিল, এখন আমি সমাধান পেয়েছি, এটি আপনাকে সাহায্য করতে পারে।

- (void)alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{
  [self performSelector:@selector(YOUR_METHOD) withObject:nil afterDelay:0.1];
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.