2013-06-18 69 views
0

我曾經有我的UIView可以很好地處理下面的幾個代表。現在我將UIViewIB更改爲UIScrollView(現在用作主視圖)。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]; 
+0

你有申報? – sangony

+0

yes.' @interface myProfileEditController:UIViewController ' –

+0

*代表*是一個對象,而不是一個方法。如果您正在討論委託人預期會響應的方法,請使用*委託方法*。如果您正在討論委託符合的接口,請使用*委託協議*或委託接口*。 – Caleb

回答

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

+0

有沒有辦法從子類訪問scrollview中的屬性或通知是唯一的方法? –

+0

您是否嘗試過使用IBOutlet,您可能需要將新的子類導入到viewController.h中 - IBOutlet canvasObject * canvas; – Wez