2015-08-17 13 views
5

Pracuję nad klawiaturą niestandardową dla iPhone 6 i 6 Plus. Opracowałem logikę dla klawisza shift - nieaktywny lub 123 i klucz abc. ale chcę również wyświetlać niestandardowy symbol, jak na przykład klawiatura Apple. proszę sprawdzić obraz.IOS Customkeyboard. Jak ustawić znak specjalny w niestandardowej klawiaturze

enter image description here

Obecnie jestem w stanie zmienić wielkie litery na małe litery i 123 abc ale jak mogę ustawić ten szczególny charakter. UWAGA: - Szukałem dużo wersji demo na githubie, ale nie widzę specjalnego znaku na żadnej niestandardowej klawiaturze.

Oto moja logika dla wielkie litery i ABC-123 Przycisk.

-(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; 
     } 
    } 

} 

Odpowiedz

1

postawiłem mój problem z ten sposób, bo zestaw obrazów kluczy również .

@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]; 

    } 
+1

tak, dobra logika do wielkich liter. –

2

Bierzesz dwa szeregi nim, po jednym dla alphabetical oraz inne dla numerical

NSArray *NumKey; 

NSArray *arrAlphabet; 

Teraz w NumKey:

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

i 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 w keyBoard the 123 lub ABC.

Dodawanie zdarzenia w sposób programowy, jak pokazano poniżej.

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

Metoda zmienić 123 do ABC lub ABC do 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++; 
     } 

    } 

} 

wyjściowa:

enter image description here

+0

dzięki za powtórkę, ale już ją ustawiłem. Chcę wiedzieć o specjalnym charakterze. np. po kliknięciu na 123 klawisz znaku specjalnego pokazany zamiast przycisku czapki i po kliknięciu na nim specjalny znak, np. ładunek w dolarach, euro, funtach itp. i 123 w miejsce znaku specjalnego. a kiedy klikniesz ABC, pojawi się ponownie klawisz Caps. proszę sprawdzić obraz. –

+0

co się stanie, gdy klikniesz przycisk specjalnej postaci? –

+0

to samo logowanie tworzy jedną tablicę symboli. –

Powiązane problemy