UIScrollView没有响应代表

时间:2013-06-18 21:37:39

标签: ios objective-c cocoa-touch

我曾经让我的UIView与几位代表合作得很好,其中一些代表如下。现在我将UIViewIB更改为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];

1 个答案:

答案 0 :(得分: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链接到新的滚动视图子类,如下所示。

enter image description here