それを行うためのより良い方法は、のようなUITextViewDelegateプロトコルメソッドを実装することだと思いますtextViewDidChange:
。たとえば、次のようなことができます。
- (void)textViewDidChange:(UITextView *)textView {
NSString *currentText = [textview text];
NSArray *currentItems = [currentText componenetsSeparatedByString:@" "];
float result = 0.0;
//If a valid expression is in the text view
if([currentItems count] > 2) {
float num1 = [[currentItems objectAtIndex:0] floatValue];
float num2 = [[currentItems objectAtIndex:2] floatValue];
NSString *operator = [currentItems objectAtIndex:1];
if([operator isEqualToString:@"+"]) {
result = num1 + num2;
answerTextField.text = [NSString stringWithFormat:@"%f", result];
}
else if([operator isEqualToString:@"-"]) {
result = num1 - num2;
answerTextField.text = [NSString stringWithFormat:@"%f", result];
}
else if([operator isEqualToString:@"*"]) {
result = num1 * num2;
answerTextField.text = [NSString stringWithFormat:@"%f", result];
}
else if([operator isEqualToString:@"/"]) {
result = num1 / num2;
answerTextField.text = [NSString stringWithFormat:@"%f", result];
}
else{
answerTextField.text = @"Invalid Operation";
}
}
}
これは、ユーザーがテキストビューでテキストを編集するたびに呼び出されます。動作するはずですが、テストしませんでした。このコードが含まれているファイルのヘッダーで、次のことを確認してください。
@interface yourClassName : yourSuperclass <UITextViewDelegate> {
//Your instance variables
}
//Your method and property declarations
編集:
- (void)textViewDidChange:(UITextView *)textView
MyClass.mというファイルにコードを入れたとしましょう。MyClass.mファイルは次のようになります。
@implementation MyClass
- (void)textViewDidChange:(UITextView *)textView {
//All the above code goes here
}
- (void)viewDidLoad
{
[super viewDidLoad];
//INCLUDE THESE LINES
Sum_TextField.delegate = self;
Answer_TextField.delegate = self;
}
- (void)viewDidUnload
{
[super viewDidUnload];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return YES;
}
@end
ヘッダーファイル(MyClass.h)に、次のように記述します。
@interface MyClass : UIViewController <UITextViewDelegate>
//Note: you don't declare - (void)textViewDidChange:(UITextView *)textView in the header file because you are implementing
//a protocol method.
//MAKE SURE SUM_TEXTFIELD AND ANSWER_TEXTFIELD ARE UITEXTVIEWS NOT UITEXTFIELDS
@property (strong, nonatomic) IBOutlet UITextView *Sum_TextField;
@property (strong, nonatomic) IBOutlet UITextView *Answer_TextField;
@end
お役に立てれば!