2017-03-07 59 views
0
- (void)viewDidLoad { 
    [super viewDidLoad]; 

    UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(0, 20, 400, 200)]; 
    [btn setTitle:@"123" forState:UIControlStateNormal]; 
    [btn setTitle:@"234" forState:UIControlStateHighlighted]; 
    [btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; 
    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; 
    [btn setBackgroundColor:[UIColor grayColor]]; 
    [btn addTarget:self action:@selector(test11) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:btn]; 
} 

- (void)test11 { 
    NSLog(@"xxxxxxxxxxxxxx"); 
} 

當我點擊屏幕左上方的按鈕,test11是工作,但不突出。當我點擊另一個區域的按鈕時,test11正在工作並且高亮。不同的設備和iOS版本的不同表現:不突出單擊該按鈕時,屏幕的左邊緣,但火災事件

  • iPhone 6S加:不與iOS 9.2.2高亮和9.3.2
  • iphone 7:不突出
  • iphone 6加:亮點與iOS 10.1
  • 所有模擬器突出
+0

嘗試爲UIControlStateSelected添加更多標題/顏色。我不確定。請試試 – anhtu

+0

只是我做了一個測試,沒關係,你是否有其他代碼 – xiaoming

+0

不同的iphone效果是不一樣的.6splus與系統9,2,2和9.3.2不高。 iPhone 7並不突出。但在iphone 6plus中與系統10.1高亮; –

回答

0

我理解的問題是,當你點擊按鈕的最左側,它沒有顯示在觸摸亮點?

這是因爲按鈕上的觸摸處理與屏幕邊緣手勢識別器衝突,所以不會轉換到識別狀態,直到敲擊完成。

如果你仔細想想:

  1. 用戶觸摸手指下降,這可能是一個水龍頭或屏幕邊緣鍋。
  2. 用戶持有的手指下降(在這裏你想要的觸摸高亮顯示),還是不確定的,如果觸摸是自來水或鍋(用戶仍可以平移橫向)
  3. 用戶鬆開手指後,系統現在知道觸摸是一個水龍頭所以可以爲它啓動事件。 3.

檢出您的層次結構中有哪些其他識別器處於活動狀態,如果您有UINavigationController,則默認情況下它具有左側屏幕邊緣識別器以用於後退手勢。這通常是這個問題的罪魁禍首。如果你願意,你可以禁用這個識別器,或者實現它的委託來讓它和你的按鈕一起玩。

+0

如果我關閉系統的3D觸摸,結果是highLighting;但在xcode中,我可以工作hightLighting –