Поиск по этому блогу

Показаны сообщения с ярлыком iOS. Показать все сообщения
Показаны сообщения с ярлыком iOS. Показать все сообщения

понедельник, 29 июня 2015 г.

Phonegap prompt. How to set input type.

В HTML для обычного поля ввода задать, данные какого типа туда можно вводить, очень просто - достаточно задать атрибут "type".

Для ввода чисел
<input type="number" name="numberTextfield"/>

Для ввода телефона
<input type="tel" name="phoneTextfield"/>

Это же прекрасно работает и в Phonegap. Появляются соответствующие клавиатуры для ввода.

А вот как задать тип клавиатуры для поля ввода, которое будет в диалоге Prompt?

Вот документация по соответствующему плагину.
http://docs.phonegap.com/en/edge/cordova_notification_notification.md.html

navigator.notification.prompt(message, promptCallback, [title], [buttonLabels], [defaultText])
Эта функция позволяет нам показывать более кастомный dislog box. Можно задать многое - callback, заголовок, текст по умолчанию и даже текст на кнопках. Но нельзя задать тип клавиатуры.

Пример использования
// Show a custom prompt dialog
function showPrompt() {
    navigator.notification.prompt(
        'Please enter your name',  // message
        onPrompt,                  // callback to invoke
        'Registration',            // title
        ['Ok','Exit']              // buttonLabels
    );
}

Еще пример со встроенным callback
window.navigator.notification.prompt(
    new String(), // message
    function(answer) {
        if (answer.buttonIndex === 1) {
            // Ok
            var newcat = answer.input1;
            transaction.executeSql("INSERT INTO cat (Name) VALUES (?)", [newcat]);
        }
        else {
            // Exit
        }
    }, // callback
    "ADD CATEGORY", //title
    ["Ok", "Exit"], // button titles
    new String() // defaultText
);

Для того чтобы его настроить нам придется лезть в исходный код плагина и дополнять его.
plugins/CDVNotification.m

Нас интересует метод
- (void)prompt:(CDVInvokedUrlCommand*)command
{
    NSString* callbackId = command.callbackId;
    NSString* message = [command argumentAtIndex:0];
    NSString* title = [command argumentAtIndex:1];
    NSArray* buttons = [command argumentAtIndex:2];
    NSString* defaultText = [command argumentAtIndex:3];
 
    [self showDialogWithMessage:message title:title 
    buttons:buttons defaultText:defaultText 
    callbackId:callbackId dialogType:DIALOG_TYPE_PROMPT];
}

В нем вызывается другой метод
    title:(NSString*)title buttons:(NSArray*)buttons 
    defaultText:(NSString*)defaultText 
    callbackId:(NSString*)callbackId dialogType:(NSString*)dialogType {
 
CDVAlertView* alertView = [[CDVAlertView alloc]
    initWithTitle:title
              message:message
             delegate:self
    cancelButtonTitle:nil
    otherButtonTitles:nil];
 
alertView.callback
 
Id = callbackId;
 
    int count = [buttons count];
 
    for (int n = 0; n < count; n++) {
        [alertView addButtonWithTitle:[buttons objectAtIndex:n]];
    }
 
    if ([dialogType isEqualToString:DIALOG_TYPE_PROMPT]) {
        UITextField* textField = [alertView textFieldAtIndex:0];
        textField.text = defaultText;
    }
 
    [alertView show];
}

Нам нужно задать полю ввода тип клавиатуры.
[textField setKeyboardType:UIKeyboardTypeNamePhonePad];

Все возможные типы клавиатур
typedef enum {
    UIKeyboardTypeDefault,                // Default type for the current input method.
    UIKeyboardTypeASCIICapable,           // Displays a keyboard which can enter ASCII characters, non-ASCII keyboards remain active
    UIKeyboardTypeNumbersAndPunctuation,  // Numbers and assorted punctuation.
    UIKeyboardTypeURL,                    // A type optimized for URL entry (shows . / .com prominently).
    UIKeyboardTypeNumberPad,              // A number pad (0-9). Suitable for PIN entry.
    UIKeyboardTypePhonePad,               // A phone pad (1-9, *, 0, #, with letters under the numbers).
    UIKeyboardTypeNamePhonePad,           // A type optimized for entering a person's name or phone number.
    UIKeyboardTypeEmailAddress,           // A type optimized for multiple email address entry (shows space @ . prominently).
    UIKeyboardTypeDecimalPad,             // A number pad including a decimal point
    UIKeyboardTypeTwitter,                // Optimized for entering Twitter messages (shows # and @)
    UIKeyboardTypeWebSearch,              // Optimized for URL and search term entry (shows space and .)
 
    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, // Deprecated
 
} UIKeyboardType;


воскресенье, 25 мая 2014 г.

Java справочник для iOS

У меня вышло приложения для iOS. Называется Java справочник.

Java справочник в AppStore



Java Справочник - это разделенный на 4 категории (Аббревиатуры, Технологии, Понятия и Инструменты) словарь, посвященный миру Java программирования. Будет очень полезен начинающим программистам, так как позволит всегда иметь под рукой пояснение для огромного количества новых слов, связанных с Java программированием.

Java справочник в AppStore



Категория Аббревиатуры




Список инструментов Java





Описание одного из инструментов



воскресенье, 11 мая 2014 г.

iOS 7. Как отсортировать массив

Как отсортировать массив строк по алфавиту

(Как отсортировать NSMutableArray и NSArray)


Допустим есть два массива строк NSArray и NSMutableArray, необходимо отсортировать их по алфавиту.
@property (retain, nonatomic) NSArray *techList;
@property (retain, nonatomic) NSMutableArray *toolList;

Для сортировки NSArray и NSMutableArray используются разные методы.
Для того, чтобы отсортировать NSArray необходимо  воспользоваться методом
- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors;  

Этот метод вернет новый отсортированный массив.

Для того, чтобы отсортировать NSMutableArray необходимо  воспользоваться методом
- (void)sortUsingDescriptors:(NSArray *)sortDescriptors; 

Этот метод отсортирует уже существующий массив

Сортировать массивы будем следующим образом

Сортируем NSArray
NSArray sortedTechList = [techList sortedArrayUsingSelector:
                       @selector(localizedCaseInsensitiveCompare:)];

Сортируем NSMutableArray
[toolList sortUsingSelector:@selector(localizedCaseInsensitiveCompare:)];

Как отсортировать массив объектов по полю

(Как отсортировать NSMutableArray и NSArray)

Теперь допустим нам необходимо отсортировать массив объектов по определенному полю. Здесь ситуация такая же как и с сортировкой массива строк. Для разных массивов используются разные методы. Если нам необходимо отсортировать массив объектов по полю name, то тогда нам понадобиться воспользоваться классом NSSortDescriptor и методом sortDescriptorWithKey

Сортируем NSArray
NSSortDescriptor *sortDescriptor =
    [NSSortDescriptor sortDescriptorWithKey:@"name"
                                  ascending:YES
                                   selector:@selector(caseInsensitiveCompare:)];
NSArray sortedTechList = [techList sortedArrayUsingDescriptors:@[sortDescriptor]];

Сортируем NSMutableArray
[toolList sortUsingDescriptors:
                    [NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"name" 
                       ascending:YES 
                       selector:@selector(caseInsensitiveCompare:)]]];


iOS 7. UITextView Как убрать пустые места сверху и снизу.

UITextView является Scroll View. iOS 7 автоматически добавляет отступы от содержимого для Scroll View, так как предполагается, что Scroll View будет прокручиваться вверх за навигационную панель и заголовок. 

 До того как убрали пустые места


После того как убрали пустые места


Чтобы предотвратить это необходимо переопределить новый метод UIViewController'а 
-(BOOL)automaticallyAdjustsScrollViewInsets {
    return NO;
}

или в методе viewDidLoad сделать следующее
- (void)viewDidLoad
{
    [super viewDidLoad];
 
    ...
    self.automaticallyAdjustsScrollViewInsets = NO;
}

вторник, 8 апреля 2014 г.

iOS 7 Три книги

Решил хорошенько изучить программирование под последнюю версию ios 7. Для этого мне очень хорошо подошла серия из трех книг от издательства O'REILLY.  Книги конечно можно читать в любой последовательности, но лучше это сделать в том порядке, в котором я их тут перечислил.

1. iOS 7 Programming Fundamentals


В этой книге рассказывается об основах программирования под ios 7. Начинается с самого нуля.



2. Programming iOS 7


Здесь уже говорится о более сложных вещах.



3. iOS 7 Programming Cookbook


А в этой книге собраны рецепты по разработке для ios 7. Очень большое количество интересных примеров и приемов.





четверг, 6 февраля 2014 г.

Список вопросов на собеседовании iOS программиста

Так как занимаюсь в том числе и разработкой приложений для iOS, то решил собирать вопросы, которые обычно задают на собеседовании на должность iOS программиста. Буду периодически добавлять новые вопросы. Буду писать вопрос и сразу на него ответ.


1. Разница между NSInteger и int
2. Расскажите в каких пяти состояниях может находится iOS приложение
3. Что будет, если отправить сообщение нулевому указателю
4. Как работает подписывание кода
5. Разница между NSSet и NSArray
6. Что означает NS в именах классов и зачем эта приставка нужна.