在 iOS 中获取 textfield.text 时将文本字段的值更改为另一种语言
Change the value of textfield to another language when get textfield.text in iOS
当我得到 mytextfield.text
时,结果是这样的:“1234”,这是一个波斯数字“1234”。
我有一种将波斯语文本转换为英语文本的方法。
我想在使用 mytextfield.text
获取文本时获取英文文本
解决方案 1:
我可以意识到当用户更改文本字段时,我可以将其更改为我想要的。但是它的性能不好,因为用户可能想多次更改它我只是想在我想得到它的时候转换它。
您是否考虑过添加一个带有 IBAction 的 UIButton,并且只有当按钮被点击时,您才会看到文本?
@IBAction func buttonTapped(_sender : AnyObject){ // Here you get the text and convert it}
我可能不明白你的问题,但我会尝试回答。
我假设您的 UITextField
是在情节提要中设置的,并且您从代码中定义了一个出口,例如
@property(nonatomic, weak) IBOutlet UITextField *mytextfield;
因此您可以通过程序的标识符访问文本字段。
或者,如果您确实通过程序设置了 mytextfield
,您也可以用相同的方式访问它。
我假设,您知道何时需要阅读 mytextfield.text
将文本转换为英文,并且我假设您有一种将文本转换为英文的方法,例如
-(NSString)convertToEnglish:(NSString *)text {…}
为什么不简单地读取 textField 文本并将其输入此方法,例如
NSString *englishText = [self convertToEnglish: mytextfield.text];
但是正如我所说,我可能没有理解你的问题……
如何创建 UITextField 的 sub-class 并覆盖 .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
指定为 class 用于您要使用此 class 为.
您可以根据需要使用 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);
}
当我得到 mytextfield.text
时,结果是这样的:“1234”,这是一个波斯数字“1234”。
我有一种将波斯语文本转换为英语文本的方法。
我想在使用 mytextfield.text
解决方案 1: 我可以意识到当用户更改文本字段时,我可以将其更改为我想要的。但是它的性能不好,因为用户可能想多次更改它我只是想在我想得到它的时候转换它。
您是否考虑过添加一个带有 IBAction 的 UIButton,并且只有当按钮被点击时,您才会看到文本?
@IBAction func buttonTapped(_sender : AnyObject){ // Here you get the text and convert it}
我可能不明白你的问题,但我会尝试回答。
我假设您的 UITextField
是在情节提要中设置的,并且您从代码中定义了一个出口,例如
@property(nonatomic, weak) IBOutlet UITextField *mytextfield;
因此您可以通过程序的标识符访问文本字段。
或者,如果您确实通过程序设置了 mytextfield
,您也可以用相同的方式访问它。
我假设,您知道何时需要阅读 mytextfield.text
将文本转换为英文,并且我假设您有一种将文本转换为英文的方法,例如
-(NSString)convertToEnglish:(NSString *)text {…}
为什么不简单地读取 textField 文本并将其输入此方法,例如
NSString *englishText = [self convertToEnglish: mytextfield.text];
但是正如我所说,我可能没有理解你的问题……
如何创建 UITextField 的 sub-class 并覆盖 .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
指定为 class 用于您要使用此 class 为.
您可以根据需要使用 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);
}