IOS Customkeyboard。 如何在自定义键盘中设置特殊字符

我正在为iPhone 6和6Plus的自定义键盘工作。 我已经开发了Shift键active – inactive或123和abc键的逻辑。 但我也想显示自定义的符号,如苹果键盘显示。 请检查图像。

在这里输入图像说明

目前我可以将大写更改为小写,123更改为abc,但是如何设置此特殊字符。 注: – 我在github上search了很多演示,但是我无法在任何自定义键盘中看到特殊字符。

这是我的大写ABC-123button的逻辑。

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

你把它的两个数组,一个用于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在123ABC keyBoard上。

以编程方式添加事件如下。

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

123更改为ABCABC更改为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++; } } } 

输出:

在这里输入图像说明

我用这种方式设置了我的问题,因为我也设置了键的图像。

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