0

以前は、UIView以下のいくつかのデリゲートでうまく機能していました。今、私はそれをUIView(メインビューとして使用されるIBようになりました)に変更しました。UIScrollView

UIScrollView以下のようなイベントデリゲートに変更したため、機能しなくなりました。キーボードなど、動き回れる要素がありましたが、それは静的なものではありません。

私は IB から思いつく限りのすべての代表者を割り当て、私が知っているほとんどのことを行いました。しかし、イベントがトリガーされない理由についてのアイデアが不足しています....

UIViewそれらが機能することで古いものに戻る場合cmd + z

誰かが私を正しい方向に向けることができますか??

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event
{

   [self.view endEditing:TRUE];
}
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { 
    // register for keyboard notifications

    return YES;
}

編集 - 補足的な答え:

@Wezly答えは完全に有効です。しかし、誰かがサブクラス化したくない場合は、メソッドUIScrollViewのみを使用してUITextFieldDelegateください。

それを行う別の方法は、に追加することviewDidLoadです:

注:まだ多くのものにアクセスできませんが、別の回避策があります

///
/// DelegateNotifications
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillShow:)
                                             name:UIKeyboardWillShowNotification
                                           object:self.view.window];
// register for keyboard notifications
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(keyboardWillHide:)
                                             name:UIKeyboardWillHideNotification
                                           object:self.view.window];
[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(textFieldDidEndEditing:)
                                             name:UITextFieldTextDidEndEditingNotification
                                           object:self.view.window];
4

1 に答える 1

1

UIScrollView オブジェクトをサブクラス化し、以下のようにその中にタッチ イベントを追加することをお勧めします。

canvasObject.h

#import <UIKit/UIKit.h>

@interface canvasObject : UIScrollView 

@end

canvasObject.m

#import "canvasObject.h"

@implementation canvasObject

- (id)initWithFrame:(CGRect)frame
{
  self = [super initWithFrame:frame];
  if (self) {
    self.canCancelContentTouches = false;
  }
  return self;
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *) event
{
  //Do Stuff
}

- (BOOL)textViewShouldBeginEditing:(UITextView *)textView { 
  return YES;
}

@end

UIScrollView次に、インターフェイス ビルダーで ID インスペクターを使用して、以下のような新しいスクロール ビュー サブクラスにリンクします。

ここに画像の説明を入力

于 2013-06-18T22:06:31.020 に答える