手勢隱藏軟鍵盤&設定UISearchBar

躍然發表於2014-12-23

一、點選手勢隱藏軟鍵盤

- (void)viewDidLoad

{

    UITapGestureRecognizer *tapGestureRecognizer =           

         [[UITapGestureRecognizer allocinitWithTarget:self action:@selector(hiddenKeyboard:)];

    tapGestureRecognizer.numberOfTapsRequired = 1;

    tapGestureRecognizer.delegate = self;

    [self.myTableView addGestureRecognizer:tapGestureRecognizer];


}




#pragma mark -除了cell did selected點選背景隱藏鍵盤,

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {

    NSLog(@"%@", [touch.view class]);

    if ([@"UITableViewCellContentView" isEqualToString:NSStringFromClass([touch.viewclass])]) {

        return NO;

    }

    return YES;

}



二、設定UISearchBar

#pragma mark- 設定UISearchBar

-(void)setSearchBarAttribute {

    self.searchBar.frame = CGRectMake(0023844);

    [self.searchBarsetPlaceholder:NSLocalizedStringWithInternational(@"trip_custCenter_newPayment_01001",@"請輸入銀行名稱")];

    // 搜尋框樣式

    [self.searchBar setBarStyle:UIBarStyleDefault];

    // 搜尋框的顏色,當設定此屬性時,barStyle將失效

    [self.searchBar setTintColor:[UIColor blackColor]];

    // 設定是否透明

    [self.searchBar setTranslucent:YES];

    // 設定搜尋框中文字框的文字偏移量

    //[self.searchBar setSearchTextPositionAdjustment:UIOffsetMake(30, 0)];

    // 設定鍵盤樣式

    //[self.searchBar setKeyboardType:UIKeyboardTypeNumbersAndPunctuation];

    // 是否顯示取消按鈕

    [self.searchBar setShowsCancelButton:NO];

    [self.searchBar setShowsCancelButton:NO animated:YES];

    

    // 是否提供自動修正功能(這個方法一般都不用的)

    // 設定自動檢查的型別

    [self.searchBar setSpellCheckingType:UITextSpellCheckingTypeYes];

    // 是否提供自動修正功能,一般設定為UITextAutocorrectionTypeDefault

    [self.searchBar setAutocorrectionType:UITextAutocorrectionTypeDefault];

    // 設定代理

    self.searchBar.delegate = self;

    //[self.searchBar sizeToFit];

    

}


#pragma mark - UISearchBarDelegate 協議

- (BOOL)searchBarShouldBeginEditing:(UISearchBar *)searchBar{

    [self.searchBar setShowsCancelButton:NO animated:YES];

    // [self.navigationController setNavigationBarHidden:YES animated:YES];

    

    return YES;

    

}


// 取消按鈕被按下時,執行的方法

- (void)searchBarCancelButtonClicked:(UISearchBar *)bar{

    [self.searchBar resignFirstResponder];

    [self.searchBar setShowsCancelButton:NO animated:YES];

    

    self.searchBar.text = @"";

    [self selectFlightInfoBySearchText:bar.text];

  

}


// 鍵盤中,搜尋按鈕被按下,執行的方法

- (void)searchBarSearchButtonClicked:(UISearchBar *)bar{

    

    [self.searchBar resignFirstResponder];

    NSString *searchText = bar.text;

    [self selectFlightInfoBySearchText:searchText];

    // [self.navigationController setNavigationBarHidden:NO animated:YES];

    

}


// 當搜尋內容變化時,執行該方法

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText;{

    

    [self selectFlightInfoBySearchText:searchText];

    

}



#pragma mark- 模糊查詢

-(void)selectFlightInfoBySearchText:(NSString *)searchText{

    

    NSMutableArray * resultArr = [[NSMutableArray allocinit];

    if (searchText.length > 0) {

        for ( PayCardObject *payCard in self.dataArray) {

            NSRange searchResult=[payCard.subPayGateName rangeOfString:searchText options:NSCaseInsensitiveSearch];

            if (searchResult.length>0) {

                [resultArr addObject:payCard];

            }

        }

        [tempDataArr removeAllObjects];

        [tempDataArr addObjectsFromArray:resultArr];

    }else{

        [tempDataArr removeAllObjects];

        [tempDataArr addObjectsFromArray:self.dataArray];

    }

    [self.myTableView reloadData];

    

}

相關文章