2013-08-30 35 views
4

我在滾動視圖內部有一個滾動視圖外的Button1和另一個Button2。我正在使用故事板。我用拖拽從兩個按鈕到不同的視圖segue。 Button1工作正常,問題與Button2一樣,無論我點擊多少次,它都不起作用,它只在單擊並拖動(奇怪!!)時才起作用。當我排除故障時,我發現每當我創建一個scrollview的插座時,它的行爲就是這樣,如果我將scrollview的連接移除到插座上,它工作正常,但我需要scrollview的插座才能工作。關於如何完成此任務的任何解決方案?這是我的看法沒有負載的樣本代碼,如果它有助於當我在iOS中創建滾動視圖的出口時,按鈕在滾動視圖中沒有響應

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"bg.png"]]; 
    self.scrollView.contentSize =CGSizeMake(320, 500); 

    UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(resignKeyboard)]; 
    [self.scrollView addGestureRecognizer:singleTap]; 
    singleTap.numberOfTapsRequired = 1; 
} 

-(void) resignKeyboard 
{ 
    [self.view endEditing:YES]; 
} 

我這是怎麼形成的出口

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView; 

注意Button2的點擊的工作,但對點擊並拖動/滑動不是單或多次點擊。

編輯:我查了一下,發現它工作正常,模擬器6.1而不是5.0

+0

是您確實使用賽格瑞,而不是一個標準的IBAction爲加入這一行? –

+0

現在使用segue,也試圖創建IBAction,但仍然是同樣的問題 – Gamerlegend

回答

1

我覺得問題是因爲添加了點擊手勢,因爲當你的按鈕位於scrollview內時,第一次點擊它適用於滾動視圖而不是按鈕,所以我只需要檢查觸摸是否是按鈕。以下是解決此問題的代碼。

-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch 
{ 
    if (self.scrollView.superview != nil) { 
     if ([touch.view isKindOfClass:[UIButton class]]) 
      { 
      return NO; // ignore the touch 
     } 
    } 
    return YES; // handle the touch 

} 

添加委託UIGestureRecognizerDelegate和viewDidLoad中到底

singleTap.delegate = self; 
0

我有類似的問題。我所做的是刪除涉及問題視圖的整個層次結構(在本例中爲按鈕2和滾動視圖),然後重新創建它們。然後重新創建網點和IBActions。

這是有效的,因爲storyboard是一個xml文檔,有時xcode會在編寫它時弄髒它。

2

檢查您的按鈕2是否在滾動視圖的範圍內。如果按鈕的任何部分位於父容器的框架之外,它將不會響應任何事件。通過更改滾動視圖的背景顏色來測試它。你也可以設置button2.clipToBounds = YES。如果按鈕超出範圍,則該部分將被裁剪。

相關問題