在委托中永远不会调用Textfield事件

时间:2011-09-23 17:09:07

标签: iphone xcode

在我的界面中,我有:

@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;

我希望在文本字段中输入任何字符后调用此方法。但这个例程从未被调用过。有什么问题?

由于

3 个答案:

答案 0 :(得分:2)

如果这是一个UITextField,你刚刚实现了一个随机方法。实际的委托方法是

-textField:shouldChangeCharactersInRange:replacementString:

尝试提供那个。

答案 1 :(得分:0)

您是否连接TextField(在您的情况下为Stock)委托给FileOwner?

如果没有,那么在Controller的viewDidLoad方法中尝试这个

Stock.delegate = self;

或者您可以将其连接到IB中。

答案 2 :(得分:0)

  1. 声明MainViewController符合UITextFieldDelegate

    @interface MainViewController : UIViewController < UITextFieldDelegate >

  2. 要调用此方法的UITextFieldDelegate应声明为:

    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

  3. 在代码或IB MainViewController中应设置为delegate

  4. 正确,它会按照假设被解雇。