-2

我需要运行这组代码:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

在另一种方法(IBAction)中。

所以例如我需要像这样运行它:

[self performSelector:@selector(textView:shouldChangeTextInRange:replacementText:) withObject:nil afterDelay:0.1];

我该怎么做?

4

1 回答 1

1

您不能传递参数来执行选择器。

您需要将要发送的数据封装到某个单一的Objective C 对象中(例如,一个NSArray、一个NSDictionary、一些自定义的Objective C 类型),然后通过[NSObject performSelector:withObject:afterDelay:] 传递它。对于您的情况:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text {

就像是:

NSArray * arrayOfThingsIWantToPassAlong = 
    [NSArray arrayWithObjects: range, text, nil];

[self performSelector:@selector(fooFirstInput:) 
           withObject:arrayOfThingsIWantToPassAlong  
           afterDelay:15.0];
于 2013-10-19T16:02:25.700 回答