Создайте пользовательскую клавиатуру и настройте ее на своем iPhone - PullRequest
6 голосов
/ 25 августа 2011

Я работаю над созданием пользовательских клавиатур, представленных EMOJI с наличием символов и графических значков, таких как смайлики и другие повседневные символы. До сих пор я узнал, что эти символы имеют стандарты Unicode, которые добавляютсяКонсорциуму Unicode и одобрен Apple.

http://itunes.apple.com/us/app/emoji-free!/id332509635?mt=8

Мне нужна помощь относительно процесса регистрации этих символов.Можно ли сделать клавиатуру совместимой для ввода текста во всех приложениях, установленных на iphone, если это так? Как действовать?

ПРИМЕЧАНИЕ. Эти клавиатуры, одобренные Apple, или приложения с ними отклоняются ... ...Любая идея

Любая помощь будет оценена.

Спасибо Vikas Ojha

Ответы [ 4 ]

11 голосов
/ 25 августа 2011

Клавиатура Emoji встроена в iOS.

Единственное, что делают все приложения "Emoji", существующие в AppStore (например, "emoji-free!"), Это то, что они активируют эту клавиатуру.в Системных настройках, потому что он скрыт по умолчанию.Эти приложения не «создают и устанавливают» саму клавиатуру и не устанавливают значки и символы (символы), смайлики уже встроены в iOS.

Например, если пользователь iPhone получаеттекстовое сообщение (SMS), содержащее некоторые смайлики, они увидят смайлик, даже если у них не установлено приложение «Emoji-enabler», например «Emoji-free!».


Чтобы бытьболее точно, значки эмодзи, которые Apple встроила в шрифты iPhone, не одобрены стандартом Unicode.Они расположены в «частной» плоскости Unicode: их кодовая точка находится в диапазоне, который специально зарезервирован для частного использования - как тот, который Apple использует для этих смайликов - но по определению, поскольку это частный регион,отсутствует специальное имя и стандартизированное использование этих кодовых точек в разных приложениях (в отличие от кодовых точек, таких как U + 0041, которые выделены для символа, представляющего латинскую букву «A»)

2 голосов
/ 11 июля 2012

Вот что я сделал, чтобы сделать клавиатуру смайликов. Сначала я создал собственное представление с двумя кнопками и установил self.textView.inputAccessoryView = self.accessoryView, затем две кнопки сделали следующее:

- (IBAction)emoticons:(id)sender 
{
    [self.textView resignFirstResponder];
    self.textView.inputView = self.emotiview.view;
    [self.textView becomeFirstResponder];
}

- (IBAction)text:(id)sender 
{
    [self.textView resignFirstResponder];
    self.textView.inputView = nil; // sets it back to it's initial form
    [self.textView becomeFirstResponder];
}

Ниже приведен фрагмент кода для создания всех кнопок и помещения их в представление, которое находится в виде прокрутки.

for( int i = 0; i < self.emoticonsCharacters.count; i++ )
    {
        UIButton* button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        button.frame = CGRectMake((i % 5)*50, 10 + 50*(i / 5), 45, 45);
        [button setTitle: [self.emoticonsCharacters objectAtIndex:i] forState:UIControlStateNormal];
        [button addTarget:self action:@selector(enterEmoticon:) forControlEvents:UIControlEventTouchDown];
        [self.emoticonsView1 addSubview:button];
    }

Это массив всех символов смайликов.

-(NSArray*) emoticonsCharacters
{
    if(!emoticonsCharacters)
    { 
        // unicode taken from http://www.easyapns.com/iphone-emoji-alerts
        emoticonsCharacters = [[NSArray alloc] initWithObjects:@"\ue415",@"\ue056",@"\ue057", @"\ue414",@"\ue405",  @"\ue418", @"\ue417", @"\ue40d", @"\ue40a", @"\ue404", @"\ue105", @"\ue409", @"\ue40e", @"\ue402", @"\ue108", @"\ue403", @"\ue058", @"\ue407", @"\ue401", @"\ue40f", @"\ue40b", @"\ue406", @"\ue413", @"\ue411", @"\ue412", @"\ue410", @"\ue107", @"\ue059", @"\ue416", @"\ue408", @"\ue40c", @"\ue11a", @"\ue10c", @"\ue32c", @"\ue32a", @"\ue32d", @"\ue328", @"\ue32b", @"\ue022", @"\ue023", @"\ue327", @"\ue329", @"\ue32e", @"\ue32f", @"\ue335", @"\ue334", @"\ue021", @"\ue337", @"\ue020", @"\ue336", @"\ue13c", @"\ue330", @"\ue331", @"\ue326", @"\ue03e", @"\ue11d", @"\ue05a", @"\ue00e", @"\ue421", @"\ue420", @"\ue00d", @"\ue010", @"\ue011", @"\ue41e", @"\ue012", @"\ue422", @"\ue22e", @"\ue22f", @"\ue231", @"\ue230", @"\ue427", @"\ue41d", @"\ue00f", @"\ue41f", @"\ue14c", @"\ue201", @"\ue115", @"\ue428", @"\ue51f", @"\ue429", @"\ue424", @"\ue423", @"\ue253", @"\ue426", @"\ue111", @"\ue425", @"\ue31e", @"\ue31f", @"\ue31d", @"\ue001", @"\ue002", @"\ue005", @"\ue004", @"\ue51a", @"\ue519", @"\ue518", @"\ue515", @"\ue516", @"\ue517", @"\ue51b", @"\ue152", @"\ue04e", @"\ue51c", @"\ue51e", @"\ue11c", @"\ue536", @"\ue003", @"\ue41c", @"\ue41b", @"\ue419", @"\ue41a", @"\ue04a", @"\ue04b", @"\ue049", @"\ue048", @"\ue04c", @"\ue13d", @"\ue443", @"\ue43e", @"\ue04f", @"\ue052", @"\ue053", @"\ue524", @"\ue52c", @"\ue52a", @"\ue531", @"\ue050", @"\ue527", @"\ue051", @"\ue10b", @"\ue52b", @"\ue52f", @"\ue528", @"\ue01a", @"\ue134", @"\ue530", @"\ue529", @"\ue526", @"\ue52d", @"\ue521", @"\ue523", @"\ue52e", @"\ue055", @"\ue525", @"\ue10a", @"\ue109", @"\ue522", @"\ue019", @"\ue054", @"\ue520", @"\ue306", @"\ue030", @"\ue304", @"\ue110", @"\ue032", @"\ue305", @"\ue303", @"\ue118", @"\ue447", @"\ue119", @"\ue307", @"\ue308", @"\ue444", @"\ue441", @"\ue436", @"\ue437", @"\ue438", @"\ue43a", @"\ue439", @"\ue43b", @"\ue117", @"\ue440", @"\ue442", @"\ue446", @"\ue445", @"\ue11b", @"\ue448", @"\ue033", @"\ue112", @"\ue325", @"\ue312", @"\ue310", @"\ue126", @"\ue127", @"\ue008", @"\ue03d", @"\ue00c", @"\ue12a", @"\ue00a", @"\ue00b", @"\ue009", @"\ue316", @"\ue129", @"\ue141", @"\ue142", @"\ue317", @"\ue128", @"\ue14b", @"\ue211", @"\ue114", @"\ue145", @"\ue144", @"\ue03f", @"\ue313", @"\ue116", @"\ue10f", @"\ue104", @"\ue103", @"\ue101", @"\ue102", @"\ue13f", @"\ue140", @"\ue11f", @"\ue12f", @"\ue031", @"\ue30e", @"\ue311", @"\ue113", @"\ue30f", @"\ue13b", @"\ue42b", @"\ue42a", @"\ue018", @"\ue016", @"\ue015", @"\ue014", @"\ue42c", @"\ue42d", @"\ue017", @"\ue013", @"\ue20e", @"\ue20c", @"\ue20f", @"\ue20d", @"\ue131", @"\ue12b", @"\ue130", @"\ue12d", @"\ue324", @"\ue301", @"\ue148", @"\ue502", @"\ue03c", @"\ue30a", @"\ue042", @"\ue040", @"\ue041", @"\ue12c", @"\ue007", @"\ue31a", @"\ue13e", @"\ue31b", @"\ue006", @"\ue302", @"\ue319", @"\ue321", @"\ue322", @"\ue314", @"\ue503", @"\ue10e", @"\ue318", @"\ue43c", @"\ue11e", @"\ue323", @"\ue31c", @"\ue034", @"\ue035", @"\ue045", @"\ue338", @"\ue047", @"\ue30c", @"\ue044", @"\ue30b", @"\ue043", @"\ue120", @"\ue33b", @"\ue33f", @"\ue341", @"\ue34c", @"\ue344", @"\ue342", @"\ue33d", @"\ue33e", @"\ue340", @"\ue34d", @"\ue339", @"\ue147", @"\ue343", @"\ue33c", @"\ue33a", @"\ue43f", @"\ue34b", @"\ue046", @"\ue345", @"\ue346", @"\ue348", @"\ue347", @"\ue34a", @"\ue349", @"\ue036", @"\ue157", @"\ue038", @"\ue153", @"\ue155", @"\ue14d", @"\ue156", @"\ue501", @"\ue158", @"\ue43d", @"\ue037", @"\ue504", @"\ue44a", @"\ue146", @"\ue50a", @"\ue505", @"\ue506", @"\ue122", @"\ue508", @"\ue509", @"\ue03b", @"\ue04d", @"\ue449", @"\ue44b", @"\ue51d", @"\ue44c", @"\ue124", @"\ue121", @"\ue433", @"\ue202", @"\ue135", @"\ue01c", @"\ue01d", @"\ue10d", @"\ue136", @"\ue42e", @"\ue01b", @"\ue15a", @"\ue159", @"\ue432", @"\ue430", @"\ue431", @"\ue42f", @"\ue01e", @"\ue039", @"\ue435", @"\ue01f", @"\ue125", @"\ue03a", @"\ue14e", @"\ue252", @"\ue137", @"\ue209", @"\ue154", @"\ue133", @"\ue150", @"\ue320", @"\ue123", @"\ue132", @"\ue143", @"\ue50b", @"\ue514", @"\ue513", @"\ue50c", @"\ue50d", @"\ue511", @"\ue50f", @"\ue512", @"\ue510", @"\ue50e", @"\ue21c", @"\ue21d", @"\ue21e", @"\ue21f", @"\ue220", @"\ue221", @"\ue222", @"\ue223", @"\ue224", @"\ue225", @"\ue210", @"\ue232", @"\ue233", @"\ue235", @"\ue234", @"\ue236", @"\ue237", @"\ue238", @"\ue239", @"\ue23b", @"\ue23a", @"\ue23d", @"\ue23c", @"\ue24d", @"\ue212", @"\ue24c", @"\ue213", @"\ue214", @"\ue507", @"\ue203", @"\ue20b", @"\ue22a", @"\ue22b", @"\ue226", @"\ue227", @"\ue22c", @"\ue22d", @"\ue215", @"\ue216", @"\ue217", @"\ue218", @"\ue228", @"\ue151", @"\ue138", @"\ue139", @"\ue13a", @"\ue208", @"\ue14f", @"\ue20a", @"\ue434", @"\ue309", @"\ue315", @"\ue30d", @"\ue207", @"\ue229", @"\ue206", @"\ue205", @"\ue204", @"\ue12e", @"\ue250", @"\ue251", @"\ue14a", @"\ue149", @"\ue23f", @"\ue240", @"\ue241", @"\ue242", @"\ue243", @"\ue244", @"\ue245", @"\ue246", @"\ue247", @"\ue248", @"\ue249", @"\ue24a", @"\ue24b", @"\ue23e", @"\ue532", @"\ue533", @"\ue534", @"\ue535", @"\ue21a", @"\ue219", @"\ue21b", @"\ue02f", @"\ue024", @"\ue025", @"\ue026", @"\ue027", @"\ue028", @"\ue029", @"\ue02a", @"\ue02b", @"\ue02c", @"\ue02d", @"\ue02e",@"\ue332",@"\ue333",@"\ue24e", @"\ue24f",@"\ue537", nil];

    }
    return emoticonsCharacters;
}
0 голосов
/ 25 августа 2011

В дополнение к моему предыдущему ответу, вы можете иметь свою собственную клавиатуру в собственном приложении, в любом случае: вы можете определить любой UIView как «inputView» для UITextField или UITextView (отметьте inputView @ свойства в документации).

Например, вы можете написать self.myTextField.inputView = myPicker;, где myPicker - это UIDatePickerView, который вы создали ранее (по коду или в вашем XIB-файле), и когда пользователь нажимает на текстовое поле, чтобы выделить его (= сделать его первым ответчиком), вместо этого стандартной клавиатуры iOS отобразит UIDatePicker.

Но, конечно, это ограничивается вашим приложением и для textFields & textViews, для которых вы его настраиваете. То есть он не представлен как «клавиатура альтернативного ввода», на которую можно переключиться, используя «значок глобуса» на клавиатуре, например, для клавиатуры Emoji или как при переключении с QWERTY на AZERTY (или любую другую клавиатуру, активированную в настройки вашего iPhone). Так что это не совсем то же самое, что и описанный вами случай «эмодзи».

0 голосов
/ 25 августа 2011
...