আইফোন-পোর্ট্রেট-নম্বরপ্যাড-কি-বোর্ডের জন্য 4 প্রকারের সমর্থন করে এমন কীপ্লেইন খুঁজে পাচ্ছেন না; 3876877096_Portrait_iPhone- সিম্পল-প্যাড_ডিফল্ট ব্যবহার করে


114

আমি আইফোন এবং এসডিকে আইওএস 8 সোনার মাস্টার ডাউনলোড করেছি।

আমি অ্যাপটি পরীক্ষা করেছি এবং এটি একটি জিনিস ব্যতীত দুর্দান্ত কাজ করে।

আমার একটি পাঠ্য ক্ষেত্র রয়েছে যেখানে ব্যবহারকারীর কিছু টাইপ করতে চাইলে একটি নম্বর প্যাড উপস্থিত হবে, কীবোর্ডটি প্রদর্শিত হলে খালি জায়গায় একটি কাস্টম বোতাম যুক্ত হবে।

- (void)addButtonToKeyboard
{
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone)
    {
        // create custom button
        UIButton * doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
        doneButton.frame = CGRectMake(-2, 163, 106, 53);
        doneButton.adjustsImageWhenHighlighted = NO;
        [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
        [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
        [doneButton addTarget:self action:@selector(saveNewLead:) forControlEvents:UIControlEventTouchUpInside];

        // locate keyboard view
        UIWindow * tempWindow = [[[UIApplication sharedApplication] windows]objectAtIndex:1];
        UIView* keyboard;
        for(int i=0; i<[tempWindow.subviews count]; i++) 
        {
            keyboard = [tempWindow.subviews objectAtIndex:i];

            // keyboard view found; add the custom button to it
            if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 3.2) {
                if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)
                    [keyboard addSubview:doneButton];
            } else {
                if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)
                    [keyboard addSubview:doneButton];
            }
        }
    }

}

এটি এখন অবধি ভাল কাজ করছিল।

প্রথমত, আমি এই সতর্কতা পাচ্ছি:

আইফোন-পোর্ট্রেট-নম্বরপ্যাড-কি-বোর্ডের জন্য 4 প্রকারের সমর্থন করে এমন কীপ্লেইন খুঁজে পাচ্ছেন না; 3876877096_Portrait_iPhone- সিম্পল-প্যাড_ডিফল্ট ব্যবহার করে

তাহলে সেই কাস্টম বোতামটিও প্রদর্শিত হচ্ছে না, যা আমি মনে করি এই 2 টি লাইনের কারণে:

if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES)

এবং

if([[keyboard description] hasPrefix:@"<UIKeyboard"] == YES)

কোনও পরামর্শ?

উত্তর:


10

আমারও এই সমস্যা ছিল এবং সমাধানও খুঁজে পেয়েছি found

নীচে কোডগুলি যা আইওএস 8.0 এবং নীচের সংস্করণগুলির জন্যও কাজ করবে।

আমি এটি iOS 7 এবং 8.0 (এক্সকোড সংস্করণ 6.0.1) এ পরীক্ষা করেছি

- (void)addButtonToKeyboard
    {
    // create custom button
    self.doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
            //This code will work on iOS 8.3 and 8.4. 
       if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.3) {
            self.doneButton.frame = CGRectMake(0, [[UIScreen mainScreen]   bounds].size.height - 53, 106, 53);
      } else {
           self.doneButton.frame = CGRectMake(0, 163+44, 106, 53);
      }

    self.doneButton.adjustsImageWhenHighlighted = NO;
    [self.doneButton setTag:67123];
    [self.doneButton setImage:[UIImage imageNamed:@"doneup1.png"] forState:UIControlStateNormal];
    [self.doneButton setImage:[UIImage imageNamed:@"donedown1.png"] forState:UIControlStateHighlighted];

    [self.doneButton addTarget:self action:@selector(doneButton:) forControlEvents:UIControlEventTouchUpInside];

    // locate keyboard view
    int windowCount = [[[UIApplication sharedApplication] windows] count];
    if (windowCount < 2) {
        return;
    }

    UIWindow *tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];
    UIView *keyboard;

    for (int i = 0; i < [tempWindow.subviews count]; i++) {
        keyboard = [tempWindow.subviews objectAtIndex:i];
             // keyboard found, add the button
          if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.3) {

            UIButton *searchbtn = (UIButton *)[keyboard viewWithTag:67123];
            if (searchbtn == nil)
                [keyboard addSubview:self.doneButton];

            } else {   
                if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) {
              UIButton *searchbtn = (UIButton *)[keyboard viewWithTag:67123];
                   if (searchbtn == nil)//to avoid adding again and again as per my requirement (previous and next button on keyboard)
                [keyboard addSubview:self.doneButton];

        } //This code will work on iOS 8.0
        else if([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES) {

            for (int i = 0; i < [keyboard.subviews count]; i++)
            {
                UIView *hostkeyboard = [keyboard.subviews objectAtIndex:i];

                if([[hostkeyboard description] hasPrefix:@"<UIInputSetHost"] == YES) {
                    UIButton *donebtn = (UIButton *)[hostkeyboard viewWithTag:67123];
                    if (donebtn == nil)//to avoid adding again and again as per my requirement (previous and next button on keyboard)
                        [hostkeyboard addSubview:self.doneButton];
                }
            }
        }
      }
    }
 }

>

- (void)removedSearchButtonFromKeypad 
    {

    int windowCount = [[[UIApplication sharedApplication] windows] count];
    if (windowCount < 2) {
        return;
    }

    UIWindow *tempWindow = [[[UIApplication sharedApplication] windows] objectAtIndex:1];

    for (int i = 0 ; i < [tempWindow.subviews count] ; i++)
    {
        UIView *keyboard = [tempWindow.subviews objectAtIndex:i];

           if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.3){
                [self removeButton:keyboard];                  
            } else if([[keyboard description] hasPrefix:@"<UIPeripheralHost"] == YES) {
                  [self removeButton:keyboard];

             } else if([[keyboard description] hasPrefix:@"<UIInputSetContainerView"] == YES){

            for (int i = 0 ; i < [keyboard.subviews count] ; i++)
            {
                UIView *hostkeyboard = [keyboard.subviews objectAtIndex:i];

                if([[hostkeyboard description] hasPrefix:@"<UIInputSetHost"] == YES) {
                    [self removeButton:hostkeyboard];
                }
            }
        }
    }
}


- (void)removeButton:(UIView *)keypadView 
    {
    UIButton *donebtn = (UIButton *)[keypadView viewWithTag:67123];
    if(donebtn) {
        [donebtn removeFromSuperview];
        donebtn = nil;
    }
}

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

তবে, আমি এখনও এই সতর্কতা পাচ্ছি:

আইফোন-পোর্ট্রেট-নম্বরপ্যাড-কি-বোর্ডের জন্য 4 প্রকারের সমর্থন করে এমন কীপ্লেইন খুঁজে পাচ্ছেন না; 3876877096_Portrait_iPhone- সিম্পল-প্যাড_ডিফল্ট ব্যবহার করে

এই সতর্কতা উপেক্ষা করে, আমি এটি কাজ করেছিলাম। আপনি যদি এই সতর্কতা থেকে ত্রাণ পেতে সক্ষম হন তবে দয়া করে আমাকে জানান।


আমার জন্য দুর্দান্ত কাজ করেছেন ধন্যবাদ বন্ধু.
CRAZYSNAKE

AddDoneButton বা removeDoneButton জন্য: stackoverflow.com/questions/26031798/... আমি আইওএস -6 / 7/8 ডিভাইসে উপর XCode-5.1.1 উপরে কোড রান। নিখুঁতভাবে কাজ করা।
alishaik786

1
- (অকার্যকর) বোতাম: (ইউআইবাটন *) প্রেরক er এনএসএলগ (@ "fdsfdsdsf"); }
সম্পদকুমার

আমি এই সমস্ত ক্রিয়া করেছিলাম তবে সম্পন্ন বোতামটি ক্লিকযোগ্য নয়, আপনি কি আমাকে হেল্প করতে পারেন?
সার্জস্টভ

আইওএস .3.৩ এর সর্বশেষতম প্রকাশের সাথে সাথে এর কিছু পরিবর্তন হয়েছে যা আগের পোস্ট কোডটি ব্যর্থ করে। আমি আইওএস 8.3 এবং তার উপরে চেক যুক্ত করেছি, এটি ভবিষ্যতের আইওএস সংস্করণে কাজ করা বন্ধ করে দিতে পারে। উপরে পরীক্ষা করুন।
আইজিডব্লু

143

আমারও সর্বশেষতম এক্সকোড বিটাতে আপডেট করার পরে এই সমস্যা হয়েছিল। সিমুলেটারের সেটিংসটি রিফ্রেশ হয়েছে, তাই ল্যাপটপ (বহিরাগত) কীবোর্ড সনাক্ত করা হচ্ছে। আপনি যদি কেবল চাপুন:

আইওএস সিমুলেটর -> হার্ডওয়্যার -> কীবোর্ড -> হার্ডওয়্যার কীবোর্ড সংযুক্ত করুন

যাতে এন্ট্রিটি চেক করা হয় তারপরে আবার সফ্টওয়্যার কীবোর্ড প্রদর্শিত হবে।


14
আমি সম্ভবত ভুল করে শিফট + সিএমডি + কে হিট করেছি!
এরিক

1
আইওএস সিমুলেটর -> হার্ডওয়্যার -> কীবোর্ড -> সংযুক্ত হার্ডওয়্যার কীবোর্ড এটিটি আনচেক করুন এবং এটি সমাধান হয়েছে
EFE

এটি কেবলমাত্র সেই চেকটিকে এড়িয়ে যায় যে আপনি যখন সিমুলেটারে থাকবেন তখন ত্রুটি ছুঁড়ে ফেলেছে - বাগ এবং কীবোর্ডের অদলবদলটি বাস্তব ডিভাইসে বাস্তব জগতে এখনও ঘটবে।
জ্যাক

যদি এটি কাজ না করে তবে সিমুলেটর -> হার্ডওয়্যার -> সমস্ত সামগ্রী এবং সেটিংস মুছুন নির্বাচন করুন।
উইমুকথি রাজাপক্ষ

1
সংস্করণ 11.5 এর জন্য; আইওএস সিমুলেটার -> আই / ও -> কীবোর্ড -> হার্ডওয়্যার কীবোর্ড সংযুক্ত করুন
মাইলট্লিউসুফ

40

এমুলেটর ম্যাকের উপর একটি সংখ্যাসূচক কীপ্যাড সন্ধান করার চেষ্টা করে, তবে এটি পাওয়া যায় না (ম্যাকবুক প্রো, ম্যাকবুক এয়ার এবং "সাধারণ / ছোট" কীবোর্ডের এটি নেই)। আপনি সংযুক্ত হার্ডওয়্যার কীবোর্ড অপশনটি অনির্বাচিত করতে পারেন বা কেবল ত্রুটি বার্তাকে উপেক্ষা করতে পারেন, এটির প্রয়োগে কোনও নেতিবাচক প্রভাব পড়বে না।


16

শুধু যাও

আইওএস সিমুলেটর -> হার্ডওয়্যার -> কীবোর্ড -> সংযুক্ত হার্ডওয়্যার কীবোর্ড বিকল্পটি নির্বাচন করুন।

এটি সমস্যার সমাধান করবে।

উপরের পদক্ষেপটি সম্পাদন করার পরে আপনার ম্যাক কীবোর্ড কাজ করবে না, আপনাকে সিমুলেটর কীবোর্ড ব্যবহার করতে হবে।


12

আমি আইওএস 8 সহ এক্সকোড ব্যবহার করছি আপনার সিমুলেটর-> হার্ডওয়্যার-> কীবোর্ড-> কানেক্ট হার্ডওয়্যার কীবোর্ডের সংযোগ হারওয়ার কীবোর্ড বিকল্পটি আনচেক করুন।

এটি সমস্যার সমাধান করবে।


আক্ষরিক অর্থে এই আইওএস সিমুলেটরটি নেই। বা হার্ডওয়্যার কোথায়? আপনি আইফোনের মতো দেখতে এমন জিনিসটির মতো প্রকৃত সিমুলেটারের কথা বলছেন এবং এর মাধ্যমে আমি হার্ডওয়্যারটি পাই?
থমাস

7

এক্সকোড 8.1 এবং আইওএস 10.1 এ আমার একই সমস্যা ছিল। আমার জন্য যা কাজ করেছিল তা সিমুলেটর-> হার্ডওয়্যার-> কীবোর্ডে যাচ্ছিল এবং সংযুক্ত হার্ডওয়্যার কীবোর্ডটি অপসারণ করছে।


7

সিমুলেটর-> হার্ডওয়্যার-> কীবোর্ডে যান এবং সংযুক্ত হার্ডওয়্যার কীবোর্ডটি অনিচ্ছুক।

কিন্তু উপরের অনেকগুলি উত্তর উত্তর হিসাবে একইভাবে আমার জন্য পরিবর্তন হয় না যতক্ষণ না আমি সিমুলেটারটি ছেড়ে এবং পুনরায় চালু করি। xcode 8.2.1 এবং সিমুলেটার 10.0।


5

সিমুলেটরটি ব্যবহার করে অ্যাপটি চালান

আইওএস সিমুলেটর-> হার্ডওয়্যার-> কীবোর্ড -> আইওএস ওএস এক্স হিসাবে একই লেআউটটি ব্যবহার করে

কেউ যদি তাদের ডিভাইসে তাদের অ্যাপ চালাচ্ছে তবে এটি সমস্যার সমাধান করবে


3

আমি দুটি পৃথক কারণে একই ত্রুটি বার্তা পেয়েছি, যাতে আপনি এগুলি আপনার ডিবাগিং চেকলিস্টে যুক্ত করতে পারেন:

প্রসঙ্গ: এক্সকোড 6.4, আইওএস: 8.4। আমি (সুইফট :), "সম্পন্ন" এবং "+/-" UIBarButtonদিয়ে লোড করতে কাস্টম এর সাথে একটি সরঞ্জামদণ্ড যুক্ত করছি । আমার যখন এই সমস্যা হয়েছিল তখন:UIKeyboardTypeNumberPadUIKeyboardType.numberPad

  1. আমার ইউআইটিউলবার একটি সম্পত্তি হিসাবে ঘোষিত হয়েছিল, তবে আমি এটি স্পষ্টভাবে বরাদ্দ / সূচনা করতে ভুলে গিয়েছিলাম।

  2. আমি শেষ লাইনটি ছেড়ে দিয়েছিলাম [myCustomToolbar sizeToFit];, যা হোল্ডেনের উত্তরের মতোই একই পরিবার বলে মনে হচ্ছে (আমার কোড এখানে: https://stackoverflow.com/a/32016397/4898050 )।

শুভকামনা


2

আপনার আইওএস অ্যাপে আপনার ওএস এক্স এর সাথে সংযুক্ত একটি সংখ্যাসূচক কীপ্যাড পাবেন না So সুতরাং আপনাকে কেবলমাত্র পরীক্ষার উদ্দেশ্যে নিম্নলিখিত পথে আপনার সিমুলেটরে হার্ডওয়্যার কীবোর্ড বিকল্পটি আনচেক করা দরকার:

Simulator -> Hardware -> Keyboard -> Connect Hardware Keyboard

এটি উপরের সমস্যাটি সমাধান করবে।

আমি মনে করি আপনার নীচের লিঙ্কটিও দেখতে হবে। এরা বলছে এটি একটি এর bugমধ্যে XCodeযে ফোরাম টপিক দিন শেষে!

উল্লেখ


1

বিতরণ প্রভিশন প্রোফাইল ব্যবহার করে আমার একই সমস্যা হয়েছিল। আপনি বিকাশকারী প্রোফাইল ব্যবহার করেন তা পরীক্ষা করে দেখুন


1

কেন লম্বা কোড এবং ইউআইটিুলবার ব্যবহার করবেন না? যেহেতু সতর্কতা এখনও অবিরত?

ইউআইটিুলবার এখানে যে কোনও আইওএস সংস্করণের জন্য কাজ করছে আমার নমুনা কোডটি

UIToolbar *doneToolbar = [[UIToolbar alloc] initWithFrame:(CGRect){0, 0, 50, 50}]; // Create and init
doneToolbar.barStyle = UIBarStyleBlackTranslucent; // Specify the preferred barStyle
doneToolbar.items = @[
[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil], 
[[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStylePlain target:self action:@selector(doneEditAction)] // Add your target action
]; // Define items -- you can add more

yourField.inputAccessoryView = doneToolbar; // Now add toolbar to your field's inputview and run
[doneToolbar sizeToFit]; // call this to auto fit to the view

- (void)doneEditAction {
    [self.view endEditing:YES];
}

0

হতে পারে আপনার বোতামটির ফ্রেমটি পুনরায় সেট করা উচিত, আমারও কিছুটা সমস্যা হয়েছিল, এবং কীবোর্ডের ভিউটিকে এইভাবে এনস্লগ করুন:

ios8:

"<UIInputSetContainerView: 0x7fef0364b0d0; frame = (0 0; 320 568); autoresize = W+H; layer = <CALayer: 0x7fef0364b1e0>>"

before8:

"<UIPeripheralHostView: 0x11393c860; frame = (0 352; 320 216); autoresizesSubviews = NO; layer = <CALayer: 0x11393ca10>>"

-1

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

- (id)addButtonToKeyboard
{
if (!doneButton)
{
   // create custom button
    UIButton * doneButton = [UIButton buttonWithType:UIButtonTypeCustom];
    doneButton.frame = CGRectMake(-2, 163, 106, 53);
    doneButton.adjustsImageWhenHighlighted = NO;
    [doneButton setImage:[UIImage imageNamed:@"DoneUp.png"] forState:UIControlStateNormal];
    [doneButton setImage:[UIImage imageNamed:@"DoneDown.png"] forState:UIControlStateHighlighted];
    [doneButton addTarget:self action:@selector(saveNewLead:) forControlEvents:UIControlEventTouchUpInside];
}

NSArray *windows = [[UIApplication sharedApplication] windows];
//Check to see if running below iOS 9,then return the second window which bears the keyboard   
if ([[[UIDevice currentDevice] systemVersion] floatValue] < 9.0) {
return windows[windows.count - 2];
}
else {
UIWindow* keyboardWithDoneButtonWindow = [ windows lastObject];
return keyboardWithDoneButtonWindow;
    }
}

এবং আপনি চাইলে কীবোর্ড থেকে কীবোর্ড বাটনটি সরিয়ে ফেলতে পারেন।

- (void)removeKeyboardButton {

id windowTemp = [self addButtonToKeyboard];

if (windowTemp) {

    for (UIView *doneButton in [windowTemp subviews]) {
        if ([doneButton isKindOfClass:[UIButton class]]) {
            [doneButton setHidden:TRUE];
        }
    }
  }
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.