Пользовательская клавиатура IOS. Как установить специальный символ на пользовательскую клавиатуру

Я работаю над пользовательской клавиатурой для iphone 6 и 6Plus. У меня есть разработка логики для клавиши Shift Active-Inactive или 123 и клавиши abc. но я хочу также отображать пользовательский символ, например, показанную клавиатуру Apple. пожалуйста, проверьте изображение.

введите здесь описание изображения

в настоящее время я могу изменить верхний регистр на нижний и 123 на abc, но как я могу установить этот специальный символ. ПРИМЕЧАНИЕ. - Я много искал демо на github, но не могу увидеть специальный символ ни на одной пользовательской клавиатуре.

Вот моя логика для верхнего регистра и кнопки ABC-123.

-(void)UpparCase:(UIButton*)sender   // To make caps or small letter
{

sender.selected=!sender.selected;
if(sender.selected)
{
    if(isPortrait)
    {

    [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"upparActive.png"] forState:UIControlStateNormal];
    }
    else
    {
        [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_selctd_land.png"] forState:UIControlStateNormal];

    }

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        NSString *uppercaseString = [[key currentTitle] uppercaseString];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

    }
   }
   else
  {

    if(isPortrait)
    {

    [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"UpperCase.png"] forState:UIControlStateNormal];
    }
    else
    {
        [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_land.png"] forState:UIControlStateNormal];

    }
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        NSString *uppercaseString = [[key currentTitle] lowercaseString];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

      }

   }
}

- (IBAction)action123:(UIButton*)sender // To set 123 and ABC
 {


 sender.selected=!sender.selected;

 if(sender.selected)
 {

    [self.ObjKeyLayout.btn123Key setTitle:@"ABC" forState:UIControlStateNormal];
            int i=0;

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {

        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
        NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i",i,(int)self.ObjKeyLayout.ArryCharKey.count);
        if(isPortrait)
        {
             NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i\nArraySpecialImageKey.Count-%i\n",i,(int)self.ObjKeyLayout.ArryCharKey.count,(int)arrspecialImageKey.count);
            [key setBackgroundImage:[UIImage imageNamed:[arrspecialImageKey objectAtIndex:i]] forState:UIControlStateNormal];




        }
        else{

            [key setBackgroundImage:[UIImage imageNamed:[arrSpecialIpad objectAtIndex:i]] forState:UIControlStateNormal];

        }

        [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
    }
  }
  else
     {
    [self.ObjKeyLayout.btn123Key setTitle:@"123" forState:UIControlStateNormal];
    int i=0;
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];


        if(isPortrait)
        {
            [key setBackgroundImage:[UIImage imageNamed:[arrKeyImages objectAtIndex:i]] forState:UIControlStateNormal];
        }
        else
        {


            [key setBackgroundImage:[UIImage imageNamed:[keyIpad objectAtIndex:i]] forState:UIControlStateNormal];
        }
        ;

        NSString *uppercaseString = [arrAlphabet objectAtIndex:i];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
       // is123selected=NO;
      }
  }

}

person Badal Shah    schedule 17.08.2015    source источник


Ответы (2)


Вы берете два массива, один для alphabetical, а другой для numerical

NSArray *NumKey;

NSArray *arrAlphabet;

Сейчас в NumKey :

NumKey=[[NSArray alloc]initWithObjects:@"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"0", @"-", @"/", @":", @";", @"(", @")", @"$", @"&", @"@", @"\"", @".", @",", @"?", @"!",@"'",@"^", nil];

и arrAlphabet :

 arrAlphabet = [[NSArray alloc]initWithObjects:@"Q", @"W", @"E", @"R", @"T", @"Y", @"U", @"I", @"O", @"P", @"A", @"S", @"D", @"F", @"G", @"H", @"J", @"K", @"L", @"Z", @"X", @"C", @"V", @"B",@"N",@"M", nil];

IBOutlet в клавиатуре 123 или ABC.

Добавление события программно, как показано ниже.

[self.keybard.btnNumeric addTarget:self action:@selector(action123:) forControlEvents:UIControlEventTouchUpInside];

Способ замены 123 на ABC или ABC на 123

- (IBAction)action123:(UIButton*)sender
{

    if([self.keybard.btnNumeric.titleLabel.text isEqualToString:@"123"])
    {
        [self.keybard.btnCapital setTitle:@"#+=" forState:UIControlStateNormal];

        [self.keybard.btnNumeric setTitle:@"ABC" forState:UIControlStateNormal];
        int i=0;
        for(UIButton *key in self.keybard.keyArray)
        {
            key.layer.cornerRadius = 6.0;

            [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

            [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
            i++;
        }
    }
    else
    {
        [self.keybard.btnCapital setTitle:@"⬆️" forState:UIControlStateNormal];

        [self.keybard.btnNumeric setTitle:@"123" forState:UIControlStateNormal];

        int i=0;
        for(UIButton *key in self.keybard.keyArray)
        {

            strFirstCap = @"0";

            NSString *uppercaseString = [arrAlphabet objectAtIndex:i];

            [key setTitle:[uppercaseString lowercaseString] forState:UIControlStateNormal];

            [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
            i++;
        }

    }

}

выход:

введите здесь описание изображения

person Kirit Modi    schedule 17.08.2015
comment
спасибо за повтор, но я уже поставил. Я хочу знать об особом характере. например, когда вы нажимаете на 123, клавиша специального символа отображается вместо кнопки с заглавными буквами, а когда вы нажимаете на нее, загружается специальный символ, такой как $, евро или фунт и т. д., и 123 устанавливается вместо специального символа. и когда вы нажимаете ABC, снова появляется клавиша Caps. пожалуйста, проверьте изображение. - person Badal Shah; 17.08.2015
comment
что происходит, когда вы нажимаете кнопку специального символа? - person Badal Shah; 17.08.2015
comment
один и тот же логин составляет один массив символов. - person Kirit Modi; 17.08.2015
comment
спасибо ваш ответ мне очень помог. тем не менее я публикую свои методы, как я это установил. - person Badal Shah; 17.08.2015

Я решил свою проблему таким образом, потому что я также устанавливаю изображения ключей.

  @interface KeyboardViewController ()
{
     BOOL ABCselect;
BOOL select123;
BOOL keypng;
BOOL checkactiveshift;
}

  -(void)UpparCase:(UIButton*)sender
{

if (ABCselect==YES) {
    if (isPortrait) {


                     [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"key.png"] forState:UIControlStateNormal];
                    [self.ObjKeyLayout.btnCapKey setTitle:@"" forState:UIControlStateNormal];
                }
                else
                {
                    [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"special_land_key.png"] forState:UIControlStateNormal];
                    [self.ObjKeyLayout.btnCapKey setTitle:@"" forState:UIControlStateNormal];
                }
    int i=0;
    // int j=0;

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {

        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
        NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i",i,(int)self.ObjKeyLayout.ArryCharKey.count);
        if(isPortrait)
         {
            NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i\nArraySpecialImageKey.Count-%i\n",i,(int)self.ObjKeyLayout.ArryCharKey.count,(int)arrspecialImageKey.count);
            [key setBackgroundImage:[UIImage imageNamed:[arrspecialImageKey objectAtIndex:i]] forState:UIControlStateNormal];

           }
        else{

            [key setBackgroundImage:[UIImage imageNamed:[arrSpecialIpad objectAtIndex:i]] forState:UIControlStateNormal];

        }

        [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

         [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
       }

     //select123=NO;
    keypng=YES;
    ABCselect=NO;
   }

   else if (select123==YES)
   {

     if(isPortrait)
     {

         [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Caps.png"] forState:UIControlStateNormal];
        [self.ObjKeyLayout.btnCapKey setTitle:@"" forState:UIControlStateNormal];

     }
     else
     {
        [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_land.png"] forState:UIControlStateNormal];
        [self.ObjKeyLayout.btnCapKey setTitle:@"" forState:UIControlStateNormal];


     }
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        NSString *uppercaseString = [[key currentTitle] lowercaseString];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

    }
    select123=NO;
    keypng=NO;
    checkactiveshift=YES;

 }
 else if (keypng==YES)
 {
    [self.ObjKeyLayout.btnCapKey setTitle:@"123" forState:UIControlStateNormal];
            //[self.ObjKeyLayout.btnCapKey setTitle:@"" forState:UIControlStateNormal];
            [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"123.png"] forState:UIControlStateNormal];

    [self.ObjKeyLayout.btn123Key setTitle:@"ABC" forState:UIControlStateNormal];


            int i=0;
            for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
            {
                [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];


                if(isPortrait)
                {
                    [key setBackgroundImage:[UIImage imageNamed:[specialkey2 objectAtIndex:i]] forState:UIControlStateNormal];
                }
                else
                {


                    [key setBackgroundImage:[UIImage imageNamed:[specialkey2Ipad objectAtIndex:i]] forState:UIControlStateNormal];
                }
                ;
                [key setTitle:[spec2title objectAtIndex:i] forState:UIControlStateNormal];

                [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
                i++;
                // [self action123:(UIButton*)sender];
                // [self addGesturToKeyBoard];

                //isshiftselected=NO;
                keypng=NO;
                ABCselect=YES;
              //  [self action123:(UIButton*)sender];
            }
    }


    else if(!self.ObjKeyLayout.btnCapKey.isSelected){


   sender.selected=!sender.selected;
   if(sender.selected )
   {
       shiftactive=YES;

       if(isPortrait)
       {

           [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"upparActive.png"] forState:UIControlStateNormal];
       }
       else
       {
           [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_selctd_land.png"] forState:UIControlStateNormal];

       }

       for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
       {


           NSString *uppercaseString = [[key currentTitle] uppercaseString];

           [key setTitle:uppercaseString forState:UIControlStateNormal];

           [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];


       }
            //   [sender1 setSelected: NO];
          // shift=YES;
       [sender setSelected: YES];
    }

      else
       {

       if(isPortrait)
        {

           [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Caps.png"] forState:UIControlStateNormal];
       }
       else
       {
           [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_land.png"] forState:UIControlStateNormal];

       }
       for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
       {


           NSString *uppercaseString = [[key currentTitle] lowercaseString];

           [key setTitle:uppercaseString forState:UIControlStateNormal];

           [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

        }
             //  [sender1 setSelected: YES];

     }

     }
     else if (self.ObjKeyLayout.btnCapKey.isSelected)
    {
    if(isPortrait)
    {

       [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Caps.png"] forState:UIControlStateNormal];
    }
    else
    {
       [self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"Uppar_land.png"] forState:UIControlStateNormal];

    }
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


       NSString *uppercaseString = [[key currentTitle] lowercaseString];

       [key setTitle:uppercaseString forState:UIControlStateNormal];

       [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];

      }
       //  [sender1 setSelected: YES];
      self.ObjKeyLayout.btnCapKey.selected = !self.ObjKeyLayout.btnCapKey.isSelected;


       }
     }

   - (IBAction)action123:(UIButton*)sender
    {


  // dummy=YES;
    sender.selected=!sender.selected;
     if(sender.selected)
    {
   // is123selected=YES;
    //[self dummy];

    [self.ObjKeyLayout.btn123Key setTitle:@"ABC" forState:UIControlStateNormal];
     //[self.ObjKeyLayout.btnCapKey setBackgroundImage:[UIImage imageNamed:@"key.png"] forState:UIControlStateNormal];
    ABCselect=YES;
    [self UpparCase:(UIButton*)sender];

    int i=0;
   // int j=0;

    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {

        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
        NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i",i,(int)self.ObjKeyLayout.ArryCharKey.count);
        if(isPortrait)
        {
             NSLog(@"\n\n123isSelected\nI-%i\tArrayCharKey.Count:-%i\nArraySpecialImageKey.Count-%i\n",i,(int)self.ObjKeyLayout.ArryCharKey.count,(int)arrspecialImageKey.count);
            [key setBackgroundImage:[UIImage imageNamed:[arrspecialImageKey objectAtIndex:i]] forState:UIControlStateNormal];




        }
        else{

            [key setBackgroundImage:[UIImage imageNamed:[arrSpecialIpad objectAtIndex:i]] forState:UIControlStateNormal];

        }

        [key setTitle:[NumKey objectAtIndex:i] forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
    }
    makeshift=NO;
}
else
{ABCselect=NO;
    [self.ObjKeyLayout.btn123Key setTitle:@"123" forState:UIControlStateNormal];
             select123=YES;
    [self UpparCase:(UIButton*)sender];



    int i=0;
    for(UIButton *key in self.ObjKeyLayout.ArryCharKey)
    {


        [key setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];


        if(isPortrait)
        {
            [key setBackgroundImage:[UIImage imageNamed:[arrKeyImages objectAtIndex:i]] forState:UIControlStateNormal];
        }
        else
        {


            [key setBackgroundImage:[UIImage imageNamed:[keyIpad objectAtIndex:i]] forState:UIControlStateNormal];
        }
        ;

        NSString *uppercaseString = [arrAlphabet objectAtIndex:i];

        [key setTitle:uppercaseString forState:UIControlStateNormal];

        [key addTarget:self action:@selector(pressKey:) forControlEvents:UIControlEventTouchUpInside];
        i++;
        //is123selected=NO;
       }
    }
     [self.ObjKeyLayout.btnCapKey setSelected: NO];

    }
person Badal Shah    schedule 17.08.2015