В данный момент я далеко от своего Mac, так что это все лучшее предположение, но ...
UITextField и UITextView оба реализуют протокол UITextInputTraits, означая, что они оба имеют свойство keyboardType.Следовательно, вы должны иметь возможность добавить наблюдателя к этому свойству, и, когда оно изменится, протестируйте изменение, чтобы увидеть, является ли его новый тип UIKeyboardTypeNumbersAndPunctuation.
Попробуйте:
// In your header
@property (nonatomic, retain) IBOutlet UITextField *textField
// In your init or viewDidLoad function
[textField addObserver:self forKeyPath:@"keyboardType" options:NSKeyValueObservingOptionNew context:nil]
// Somewhere in your class add the following
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
{
if (textfield.keyboardType == UIKeyboardTypeNumbersAndPunctuation) {
// This is where you'd add your accessoryView
} else {
// And this is where you'd remove it when the keyboardType changes to
// anything other than UIKeyboardTypeNumbersAndPunctuation
}
}