Как добавить метод в UITextField & UITextView? - PullRequest
2 голосов
/ 26 мая 2011

Я хочу поместить что-то подобное в методе для UITextField & UITextView.

- (void)changeKeyboardType:(UIKeyboardType)keyboardType {
    paymentTextView.keyboardType = UIKeyboardTypeAlphabet;
    [paymentTextView resignFirstResponder];
    [paymentTextView becomeFirstResponder];
}

Как мне это сделать? Я знаю, что могу создавать категории как для UITextField, так и для UITextView, но возможно ли это сделать одним выстрелом?

Под одним выстрелом я подразумеваю добавление его к обоим классам с одним протоколом вместо создания двух категорий: одна для UITextView и одна для UITextField. Я слышал, что протокол похож на модуль Ruby, но в модуле Ruby я могу реализовать этот метод. В протоколе только кажется, что я могу объявить метод, но не реализовать его. Могу ли я также реализовать метод в протоколе, а затем включить этот протокол в UITextField & UITextView?

Как добавить метод к существующему протоколу в Какао? близко, но не совсем.

Ответы [ 3 ]

4 голосов
/ 26 мая 2011

Как насчет этого?

// UIView+UITextInputTraits.h

@interface UIView (UITextInputTraits)
- (void)changeKeyboardType:(UIKeyboardType)keyboardType;    
@end


// UIView+Additions.m

#import "UIView+UITextInputTraits.h"

@implementation UIView (UITextInputTraits)

- (void)changeKeyboardType:(UIKeyboardType)keyboardType {
    if ([self conformsToProtocol:@protocol(UITextInputTraits)]) {
        id<UITextInputTraits> textInput = (id<UITextInputTraits>)self;
        if (textInput.keyboardType != keyboardType) {
            [self resignFirstResponder];
            textInput.keyboardType = keyboardType;
            [self becomeFirstResponder];
        }
    }
}

@end
3 голосов
/ 26 мая 2011

Для каждого из них вы можете создать категорию.

Файл интерфейса:

@interface UITextField (ChangeKeyboard)
- (void)changeKeyboardType:(UIKeyboardType)keyboardType;
@end

Файл реализации:

@implementation UITextField (ChangeKeyboard)
- (void)changeKeyboardType:(UIKeyboardType)keyboardType {
    self.keyboardType = keyboardType;
    [self resignFirstResponder];
    [self becomeFirstResponder];
}
@end

Это будет путь кдобавьте их, но я не проверял функциональность.

0 голосов
/ 26 мая 2011

Как сказал @ Джош, метод метания - это не то, что ты ищешь.Однако то, что я на самом деле имел в виду (я не рекомендую больше изучать его перед отправкой ответа), это добавить метод во время выполнения в UITextView и UITextField.Хотя для его реализации требуется немного больше кода, он может дать вам тот вид единовременного поиска, который вы ищете (вы создаете метод и добавляете его в UITextView и UITextField во время выполнения)

Вотсообщение в блоге об этом:

http://theocacao.com/document.page/327

http://www.mikeash.com/pyblog/friday-qa-2010-11-6-creating-classes-at-runtime-in-objective-c.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...