Разработка iOS через Xcode: UIView & UITextView / UIPickerView - Не удается назначить делегата? - PullRequest
0 голосов
/ 01 сентября 2011

Вплоть до обновления Xcode вчера вечером, это работало замечательно (хотя, вероятно, благодаря чистой тупой удаче!).

Я получаю сообщение об ошибке для моих UITextViews, Fields и UIPickerViews при назначении делегата:

[m_textField setDelegate:GAMESTATE->glView.self];

m_textField определяется как UITextField *. glView определяется как UIView *. Для простоты я использую только один UIView для всего приложения (это также может быть проблемой). Мне нужен только доступ к нескольким основным операциям в приложении, чтобы получить простую текстовую информацию от пользователя. Теперь я получаю ошибку:

Cannot initialize a parameter of type 'id<UITextFieldDelegate>' with an rvalue of type 'UIView*'

Как я уже сказал, я, вероятно, сначала делал что-то не так, и это работало только благодаря чистой, глупой удаче! Если это поможет, я уже подклассифицирую свой UIView как делегат акселерометра, например:

@interface GLView : UIView <UIAccelerometerDelegate>

Любая помощь, предложения или советы будут с благодарностью. Этим утром я наткнулся на некоторые книги и разобрался с несколькими документами Apple, но быстрый обходной путь не представляется возможным. Я не против рефакторинга способа, которым я принимаю ввод от пользователя, я мог бы просто использовать руку, чтобы попасть туда.

1 Ответ

2 голосов
/ 01 сентября 2011

Вы должны создать, например, NSObject, который будет делегировать

  1. для UITextView: UITextViewDelegate.
  2. для UIPickerView: UIPickerViewDelegate

Ваше объявление класса должно выглядеть так:

@interface MyViewDelegator:NSObject<UITextViewDelegate, UIPickerViewDelegate>

Затем вы должны выделить + инициализировать его и установить в качестве делегатора ваших представлений text / picker:

MyViewDelegator *delegator = [[MyViewDelegator alloc] init];
[m_textField setDelegate:delegator];

Не забудьте реализовать в MyViewDelegator соответствующие методы, которые не являются обязательными для протоколов.

...