Измените значение текстового поля на другой язык, когда получите textfield.text в iOS - PullRequest
3 голосов
/ 09 июня 2019

когда я получу mytextfield.text результат будет таким: "۱۲۳۴", который является персидским числом "1234".У меня есть метод, который преобразует персидский текст в английский текст.Я хочу получить текст на английском языке при получении текста с помощью mytextfield.text

решение 1: я могу понять, когда пользователь изменяет текстовое поле, тогда я могу изменить его на то, что я хочу.но его производительность не очень хорошая, потому что пользователь может захотеть изменить его несколько раз, я просто хочу преобразовать его, когда я хочу его получить.

Ответы [ 4 ]

3 голосов
/ 14 июня 2019

Как насчет создания подкласса UITextField и переопределения .text?

В вашем .h файле

#import <UIKit/UIKit.h>

@interface TranslatingTextField : UITextField

@end

В вашем .m файле

@implementation TranslatingTextField

- (NSString *)text {
    return MyTranslation(super.text); // Your translation is called here
}

@end

Если вы используете Interface Builder , обязательно укажите TranslatingTextField в качестве класса для текстовых полей, для которых вы хотите использовать этот класс.

0 голосов
/ 18 июня 2019

Вы можете сделать это, как хотите, используя категорию в Objective-c, см. Реализацию ниже.

UITextField + Category.h

#import <UIKit/UIKit.h>

    NS_ASSUME_NONNULL_BEGIN

    @interface UITextField (Category)

    @end

    NS_ASSUME_NONNULL_END

UITextField + Category.m

#import "UITextField+Category.h"

@implementation UITextField (Category)

- (NSString *)text {
    return ConvertToEnglish(super.text); //Call your Util function From here
}


@end

Использует

     #import "UITextField+Category.h"

- (void)whenYouWant {
    //Just call txtName.text Call anywhere in the class :  
    NSLog(@"%@", self.txtName.text);
}
0 голосов
/ 12 июня 2019

Я, вероятно, не понимаю ваш вопрос, но все равно попробую ответить.
Я предполагаю, что ваш UITextField настроен в раскадровке, и вы определили выход из своего кода к нему, что-то вроде

@property(nonatomic, weak) IBOutlet UITextField *mytextfield;  

Таким образом, вы можете получить доступ к textField по программе по его идентификатору.
Или, если вы все равно настроили mytextfield по программе, вы также можете получить к нему доступ тем же способом.

Полагаю, вы знаете, когда вам нужно прочитать mytextfield.text, чтобы преобразовать текст в английский, и я предполагаю, что у вас есть метод для преобразования текста в английский, например,

-(NSString)convertToEnglish:(NSString *)text {…}  

Почему бы вам просто не прочитать текст textField и не ввести его в этот метод, например

NSString *englishText = [self convertToEnglish: mytextfield.text];  

Но, как я уже сказал, я, вероятно, не понял вашего вопроса ...

0 голосов
/ 09 июня 2019

Рассматривали ли вы добавление UIButton с IBAction, и только когда вы нажмете кнопку, вы получите текст?

@IBAction func buttonTapped(_sender : AnyObject){ // Here you get the text and convert it}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...