2014-09-10 127 views
1

我剛更新到xCode 6和iOS 8,我注意到我的應用程序非常奇怪的東西。在我的應用程序中,我有一個滾動視圖,其中有幾個按鈕,水平對齊。我設置它來創建我自己的自定義滾動標籤欄控制器。在更新iOS 8和xCode 6之前,一切工作都很完美,但現在我意識到,當我嘗試向左或向右滾動滾動視圖時,我的初始觸摸位於滾動視圖中的某個按鈕內,則不會發生滾動。但是,如果我觸摸按鈕之間的滾動按預期工作。我認爲這是一個按鈕註冊觸摸的問題,就像滾動視圖從未被觸摸一樣。但這完全是100%工作,所以我不知道怎麼回事!UIScrollView與UIButtons - 滾動視圖不會滾動當按鈕開始

+0

只爲任何人在這裏使用谷歌搜索。我有一個奇怪的地方,更新到XCode6,出於某種原因,它關閉(!)「用戶交互已啓用」的視圖,在故事板。誰知道爲什麼!我把它打開了,一切都很好。 – Fattie 2014-09-26 16:21:53

回答

3

我結束了創建的UIScrollView的子類,設置它的cancelContentTouches值設置爲TRUE,我的問題解決了

+0

不適合我。它不像7.1中那樣平滑 – rozochkin 2014-09-17 11:44:42

+2

我認爲你的意思是這個方法 - (布爾)touchesShouldCancelInContentView:(UIView *)查看 – rozochkin 2014-09-17 11:51:50

+1

沒有'cancelContentTouches'。你的意思是'canCancelContentTouches'?我將它設置爲「YES」,但它仍然不適合我。 – 2014-09-20 00:13:06

1

UIScrollView的子類和下方添加代碼到.m文件,並解決的iOS 8

下我的滾動凍結問題

代碼:

- (BOOL)touchesShouldBegin:(NSSet *)touches withEvent:(UIEvent *)event inContentView:(UIView *)view 
{ 
    UITouch *touch = [touches anyObject]; 

    if(touch.phase == UITouchPhaseMoved) 
    { 
     return NO; 
    } 
    else 
    { 
     return [super touchesShouldBegin:touches withEvent:event inContentView:view]; 
    } 
} 

將此溶液pasta12的回答中發現https://stackoverflow.com/a/25900859/3433059

+0

在我的情況下,需要將此解決方案添加到其他給定的解決方案。 – Joel 2017-08-14 22:32:14

0

沒有必要繼承ScrollView 只是使用這個:

yourScrollView.panGestureRecognizer.delaysTouchesBegan =yourScrollView.delaysContentTouches;