在我的界面中,我有:
@interface MainViewController : UIViewController <SKProductsRequestDelegate, SKPaymentTransactionObserver, UITextFieldDelegate> {
UITextField *Stock;
// ....
}
这是我的实施:
- (BOOL)Stock:(UITextField *)textField shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
{
if([[textField text] isEqualToString:@"\n"]) {
[textField resignFirstResponder];
return NO;
}
return YES;
}
在viewDidLoad
我有Stock.delegate = self
;
我希望在文本字段中输入任何字符后调用此方法。但这个例程从未被调用过。有什么问题?
由于
答案 0 :(得分:2)
如果这是一个UITextField,你刚刚实现了一个随机方法。实际的委托方法是
-textField:shouldChangeCharactersInRange:replacementString:
尝试提供那个。
答案 1 :(得分:0)
您是否连接TextField(在您的情况下为Stock)委托给FileOwner?
如果没有,那么在Controller的viewDidLoad方法中尝试这个
Stock.delegate = self;
或者您可以将其连接到IB中。
答案 2 :(得分:0)
声明MainViewController
符合UITextFieldDelegate
:
@interface MainViewController : UIViewController < UITextFieldDelegate >
要调用此方法的UITextFieldDelegate应声明为:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
在代码或IB
MainViewController
中应设置为delegate
。
正确,它会按照假设被解雇。